說說在 Python 中如何複製、移動、改名以及刪除文件或文件夾

要實現複製、移動、改名以及刪除文件或文件夾,需要用到 shutil 模塊,shutil 是 shell util 的簡寫形式,表示 shell 工具。

1 複製文件或文件夾

調用 shutil.copy(source, destination) 來實現複製文件或文件夾功能,依據 destination 進行區分:

  1. 如果 destination 是文件夾,那麼會將路徑 source 處的文件複製到路徑 destination 處的文件夾。
  2. 如果 destination 是一個文件名,那麼會將路徑 source 處的文件改爲新的名字。
import shutil, os

'''
複製文件夾和文件
'''

os.chdir('F:\\temp')

# 把文件複製到文件夾
path = shutil.copy('F:\\temp\\config.xml', 'F:\\temp\\1')
print('path=', path)

# 把文件複製到文件夾,並改名
path = shutil.copy('F:\\temp\\config.xml', 'F:\\temp\\1\\conf.xml')
print('path=', path)

運行結果:

path= F:\temp\1\config.xml
path= F:\temp\1\conf.xml

注意: 指定複製的文件夾必須存在,否則會拋出 FileNotFoundError。

shutil 的 copytree(source, destination) 方法會複製整個文件夾,包括它所包含的所有文件夾和文件。source
指定源文件夾,destination 指定新的文件夾。source 和 destination 入參都是字符串。該函數會返回新文件夾的路徑。destination 如果不存在,會自動創建。請看下例:

# 複製整個文件夾
path = shutil.copytree('F:\\temp\\1', 'F:\\temp\\1_backup')
print('path=', path)

運行結果:

path= F:\temp\1_backup

2 移動文件或文件夾

shutil.move(source, destination) 方法會將路徑 source 處的文件移動到路徑 destination,並返回新位置的絕對路徑的字符串。
如果 destination 指向一個文件夾, source 處的文件將移動到 destination 中, 並保持原來的文件名。

import shutil

'''
移動文件或文件夾
'''
# 移動文件
path = shutil.move('F:\\temp\\bird2.log','F:\\temp\\conf')
print('path=', path)

# 移動文件夾
path = shutil.move('F:\\temp\\python', 'F:\\temp\\conf')
print('path=', path)

運行結果:

path= F:\temp\conf\bird2.log
path= F:\temp\conf\python

注意:

  1. 如果在 destination 中原來已經存在了一個同名文件(與 source 相同),那麼這個文件就會被覆寫。
  2. 如果 destination 文件夾不存在,那麼 shutil 就會新建一個 destination 文件,這一點容易造成困擾。

3 永久刪除文件或文件夾

os 模塊中的函數,可以實現刪除一個文件或一個空文件夾。而 shutil 更強大,使用它可以刪除一個非空文件夾!

方法 說明
os.unlink(path) 刪除 path 處的文件。
os.rmdir(path) 刪除 path 處的文件夾,這個文件夾必須是空的文件夾。
shutil.rmtree(path) 刪除 path 處的文件夾,這個文件夾內所包含的所有文件和文件夾都會被刪除。

注意: 因爲是永久刪除,所以使用這些函數一定要小心!建議調試程序時, 先註釋掉這些刪除方法,
然後加上 print(), 把要被刪除的文件打印出來,確認後,再執行。

import os

'''
永久刪除文件和文件夾
'''
os.chdir('F:\\temp\\conf\\')

for filename in os.listdir():
    if filename.endswith('.log'):
        print(filename)
        #os.unlink(filename)

打印出來的文件列表確認無誤後,再執行 os.unlink(filename) 執行刪除操作。

4 安全刪除文件或文件夾

send2trash 模塊會將文件夾或文件發送到計算機的回收站。首先,安裝它:

pip install send2trash

安裝成功後,調用 send2trash.send2trash 方法,就可以把文件夾或文件發送到計算機的回收站。請看下例:

import os
import send2trash

'''
將文件夾或文件發送到計算機的回收站
'''
os.chdir('F:\\temp\\conf\\')

send2trash.send2trash('python')

建議使用 send2trash.send2trash() 函數來刪除文件或文件夾,因爲以後還可以從回收站還原。但這樣做,不
會釋放磁盤空間。如果我們還是希望程序釋放磁盤空間, 就要用 os 和 shutil 來刪除文件和
文件夾(記得使用之前提出的 print 技巧)。還有一點需要注意, send2trash() 函數只能將文件送到回收站, 但不能從回收站中恢復文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章