shuttil 模塊 包含一些處理文件的函數。
import shutil 引入包
shutil.copy('C:\\a\\1.txt','C:\\b') 將1.txt文件複製到路徑C:\\b中。
shutil.copy('C:\\a\\1.txt','C:\\b\\33.txt') 將1.txt文件複製到C:\\b中並改名字爲33.txt
需要注意的是使用shutil.copy(), 如果b文件夾中有相同名字的文件,那麼b文件中的文件將被覆蓋。已測試
shutil.copytree(‘G:\\a’,'G:\\b')
創建一個新的文件夾G:\\b,並將G:\\a整個文件複製到b下 ,相當於給a做了一個備份,不會覆蓋相同名稱的文件夾,會報錯
shutil.move(‘G:\\a\\22.txt’,'G:\\c') 使用方法和shutil.copy一樣,如果G:\\c文件夾中有22.txt文件 他將會被覆蓋掉,沒有c文件夾會報錯
刪除文件和文件夾
shutil.retree(path) 將刪除path處的文件夾,文件夾和裏面的文件都會被刪除。需要注意的是使用shutil.retree()刪除的文件不可以被恢復。
os模塊中也有函數可以刪除
os.unlink('G:\\python學習\\222\\2.txt') 將刪除2.txt文件
os.rmdir(path) 將刪除path處的文件夾,但是文件夾必須爲空
比較安全的是使用send2trash模塊裏的send2trash函數來刪除文件和文件夾。此函數將刪除的文件和文件夾放到回收站,可以從回收站恢復。
send2trash.send2trash('G:\\python學習\\222\\2.txt')
遍歷文件夾
os.walk(‘文件路徑’) 將返回三個值
1.返回當前目錄的字符串
2.當前文件夾中子文件夾中的字符串列表
3.當前文件夾在中的文件字符串列表
G:\python學習\222 #主文件夾包含一個子文件夾G:\python學習\222\2和1.txt文件,子文件夾內沒有文件。
import os ,shutil for fold,sub,fil in os.walk('G:\\python學習\\222'): print('我是fold',fold) print('我是sub',sub) print('我是fil',fil)
我是fold G:\python學習\222
我是sub ['2'] #子文件夾的名字
我是fil ['1.txt']
我是fold G:\python學習\222\2 #這個文件夾裏面是空的所有返回的另外兩個值也是空的列表。
我是sub []
我是fil []
由此可見
第一個返回值主文件夾,字符串
第二個返回值是主文件夾中的子文件夾的名字,列表
第三個返回值是主文件夾中的文件,列表
然後開始迭代
同上遍歷子文件夾