我們使用?os.path.join()?函數拼接出文件要移動的目標地址。
并使用?os.path.exists()?函數配合?not 關鍵字找到未創建的文件夾。
這節課,我們會先創建文件夾,然后再移動文件到目標文件夾。如果文件夾不存在,我們需要先創建文件夾,再移動文件。
創建文件夾可以使用?os.mkdir()?函數:將要創建的文件夾路徑作為參數傳入函數中即可。
?
os.mkdir("/Users/yequ/Downloads/音頻文件")
?加上?os.mkdir(targetPath)?即可創建所有不存在的文件夾。
?在開始正式移動文件到目標文件夾之前,我們需要再思考一個問題。
在代碼運行之前,阿文的下載文件夾里已經存在一些分類文件夾了,比如圖例中“PDF文件”這個文件夾就是已經存在的。
這樣的話,在程序運行時,按目前的邏輯,計算機就會把這個文件夾分類為其他文件,因為這個文件夾沒有后綴名。
?我們將要進行判斷的文件路徑傳入到?os.path.isdir()?函數中,如果該路徑是文件夾就會返回True,如果不是就返回False。
?要想移動文件,我們需要導入Python中另一個內置的模塊?shutil?,然后使用?shutil.move()?函數來對文件進行移動。
shutil.move() 函數可以用來移動文件或文件夾。它接收兩個參數,第一個參數是要移動的文件(夾)路徑,第二個參數是目標文件(夾)的路徑。
# 導入shutil模塊
import shutil# 準備移動的文件路徑
srcPath = "/Users/yequ/Downloads/心動.MP3"# 目標文件夾路徑
targetPath = "/Users/yequ/Downloads/音頻文件"# 使用shutil.move()函數移動文件
shutil.move(srcPath, targetPath)
# 使用import導入os模塊
import os# 使用import導入shutil模塊
import shutil# 將阿文的下載文件夾路徑 /Users/yequ/Desktop 賦值給變量desktopPath
desktopPath = "/Users/yequ/Desktop"# 使用os.listdir()函數獲取該路徑下所有的文件(夾),并賦值給變量allItems
allItems = os.listdir(desktopPath)# 使用for循環遍歷所有文件(夾)
for item in allItems:# 獲取文件后綴名extension = os.path.splitext(item)[1].lower()# 定義一個變量targetPath,用來表示準備移動到的文件夾路徑targetPath = ""if extension in [".jpg", ".jpeg", ".gif", ".png", ".bmp"]:# 使用os.path.join()函數拼接分類文件夾路徑:圖片文件# 并賦值給變量targetPathtargetPath = os.path.join(desktopPath, "圖片文件")elif extension in [".avi", ".mp4", ".wmv", ".mov", ".flv"]:# 使用os.path.join()函數拼接分類文件夾路徑:視頻文件# 并賦值給變量targetPathtargetPath = os.path.join(desktopPath, "視頻文件")elif extension in [".wav", ".mp3", ".mid", ".ape", ".flac"]:# 使用os.path.join()函數拼接分類文件夾路徑:音頻文件targetPath = os.path.join(desktopPath, "音頻文件")elif extension in [".pdf"]:# 使用os.path.join()函數拼接分類文件夾路徑:PDF文件targetPath = os.path.join(desktopPath, "PDF文件")elif extension in [".docx", ".doc"]:# 使用os.path.join()函數拼接分類文件夾路徑:Word文件targetPath = os.path.join(desktopPath, "Word文件")elif extension in [".xlsx", ".xls"]:# 使用os.path.join()函數拼接分類文件夾路徑:Excel文件targetPath = os.path.join(desktopPath, "Excel文件")elif extension in [".pptx", ".ppt"]:# 使用os.path.join()函數拼接分類文件夾路徑:PPT文件targetPath = os.path.join(desktopPath, "PPT文件")else:# 使用os.path.join()函數拼接分類文件夾路徑:其他文件targetPath = os.path.join(desktopPath, "其他文件")# 判斷當如果目標文件夾不存在if not os.path.exists(targetPath):# 使用os.mkdir()函數創建文件夾os.mkdir(targetPath)# 使用os.path.join()函數拼接desktopPath和文件名# 并賦值給變量itemPathitemPath = os.path.join(desktopPath, item)# 判斷當itemPath不是文件夾時。if not os.path.isdir(itemPath):# 使用shutil.move()函數移動文件到targetPath路徑shutil.move(itemPath, targetPath)
?