檔案整理常常會浪費很多時間。但如果讓機器來做這樣複雜的事情,不到10秒鐘就能完成1個小時工作。
進行檔案整理最直接的方式就是通過檔案型別進行整理。所有的txt檔案放在一個叫做txt檔案的資料夾,exe檔案放在另一個叫做exe檔案的資料夾裡。
匯入兩個模組,shutil和os。os模組可以幫助我們讀取資料夾的檔案和建立分類檔案的資料夾。而shutil模組是幫助我們移動檔案到資料夾裡。
import shutil,os
我們需要一個整理目標和需要整理的檔案型別,用input()來給使用者輸入。
clean = input('請輸入要整理的目錄路徑(請用雙反斜槓):')
file_name = input("需要分類的檔案(輸入副檔名,用英文符號‘,’隔開可以寫多個副檔名):").split(',')
為了獲取多個分類檔案,我們要用split來處理','。這樣就可以讓使用者輸入多個檔案型別了。
如果有整理剩餘的檔案,我們可以建立出一個叫做其它檔案的資料夾,所以我們還要詢問使用者是否要建立一個其它檔案的資料夾。
choose = input('請問是否要建立一個整理剩餘檔案的資料夾?(yes or no)')
之後,我們就列出來目標資料夾的目錄,用files = os.listdir(clean),之後再用for迴圈遍歷出所有需要分類的檔案。
files = os.listdir(clean)
for i in file_name:
os.mkdir(clean + i + '檔案')
如果剛剛詢問使用者是否要建立出一個整理剩餘資料夾時使用者輸入了yes,那麼就也建立一個叫做其它檔案的資料夾。
if choose == 'yes':
os.mkdir(clean + '其它檔案')
目標有了,建立出了一個資料夾,就差最後一步,把分類檔案移到資料夾,這時候shutil模組就派上了用場,move這個函式需要兩個引數,一個是要移動的檔案的路徑,一個是移動到哪裡的路徑。用for迴圈遍歷出files的所有檔案,再用shutil模組的move函式進行移動檔案。
for i in files:
for file in file_name:
if os.path.isdir(clean + i):
break
if i.endswith(file):
shutil.move(clean + i,clean + file + '檔案')
break
if file == file_name[0]:
if j1:
shutil.move(clean + i,clean + '其它檔案')
注意:clean變數之所以會在這裡出現是因為需要和i拼接出一個完整的資料夾路徑,沒有完整的路徑,就會報出一個filenotfounderror(找不到指定的目錄)。
最後,這個簡單的檔案整理操作就完成了,之後也可以新增一些其他的東西,比如處理異常,永遠執行......