檔案整理常常會浪費很多時間。但如果讓機器來做這樣複雜的事情,不到 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(找不到指定的目錄)。
最後,這個簡單的檔案整理操作就完成了,之後也可以新增一些其他的東西,比如處理異常,永遠執行......
本作品採用《CC 協議》,轉載必須註明作者和本文連結