刪除文件
在Python中,您可以使用os.remove(),os.unlink(),(),pathlib.Path.unlink()刪除單個文件。
os模塊提供了一種與作業系統交互的可攜式方法。該模塊可用於Python 2和3。
要使用os.remove()刪除單個文件,請將路徑作為參數傳遞給文件:
import os
file_path = '/tmp/linuxmi.txt'
os.remove(file_path)os.remove() 和 os.unlink()函數在語義上是相同的:
import os
file_path = '/tmp/_cafenv-appconfig_'
os.unlink(file_path)刪除文件需要在包含文件的目錄上具有寫和執行權限。 否則,您將得到PermissionError錯誤。
為了避免在刪除文件時出錯,可以使用異常處理來捕獲異常並發送適當的錯誤消息:
import os
file_path = '/tmp/_cafenv-appconfig_'
try:
os.remove(file_path)
except OSError as e:
print("Error: %s : %s" % (file_path, e.strerror))
Error: /tmp/_cafenv-appconfig_ : Operation not permittedpathlib模塊在Python 3.4及更高版本中可用。 如果要在Python 2中使用此模塊,可以使用pip進行安裝。 pathlib提供了一個面向對象的界面,用於處理不同作業系統的文件系統路徑。要使用pathlib模塊刪除文件,請創建一個指向該文件的Path對象,然後對該對象調用unlink()方法:from pathlib import Path
file_path = Path('/tmp/linuxmi.txt')
try:
file_path.unlink()
except OSError as e:
print("Error: %s : %s" % (file_path, e.strerror))
pathlib.Path.unlink(),os.remove() 和 os.unlink()也可用於刪除符號連結。您可以使用glob模塊根據模式匹配多個文件。 例如,要刪除/tmp目錄中的所有.txt文件,您將使用以下內容:import os
import glob
files = glob.glob('/tmp/*.txt')
for f in files:
try:
f.unlink()
except OSError as e:
print("Error: %s : %s" % (f, e.strerror))要遞歸刪除/tmp目錄中所有.txt及其下所有子目錄的文件,請將recursive=True參數傳遞給 glob()函數,並使用``**`模式:
import os
import glob
files = glob.glob('/tmp/**/*.txt', recursive=True)
for f in files:
try:
os.remove(f)
except OSError as e:
print("Error: %s : %s" % (f, e.strerror))
pathlib模塊包含兩個glob函數glob() 和 rglob(),用於匹配給定目錄中的文件。 glob() 僅與頂級目錄中的文件匹配。 rglob() 遞歸地匹配目錄和所有子目錄中的所有文件。 下面的示例代碼刪除/tmp目錄中的所有.txt文件:from pathlib import Path
for f in Path('/tmp').glob('*.txt'):
try:
f.unlink()
except OSError as e:
print("Error: %s : %s" % (f, e.strerror))
在Python中,您可以使用os.rmdir() 和 pathlib.Path.rmdir()刪除一個空目錄,而shutil.rmtree()刪除一個非空目錄。import os
dir_path = '/tmp/linuxmi'
try:
os.rmdir(dir_path)
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))from pathlib import Path
dir_path = Path('/tmp/linuxmi')
try:
dir_path.rmdir()
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))
shutil模塊允許您對文件和目錄執行許多高級操作。使用shutil.rmtree()函數,您可以刪除給定目錄,包括其內容:import shutil
dir_path = '/tmp/linuxmi'
try:
shutil.rmtree(dir_path)
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))
傳遞給shutil.rmtree()的參數不能是指向目錄的符號連結。我們已向您展示了如何使用os.remove(),os.unlink() 和 pathlib.Path.unlink()刪除單個文件, os.rmdir() 和pathlib.Path.rmdir()刪除空白文件,以及shutil.rmtree()來遞歸地刪除目錄及其所有內容。刪除文件或目錄時要格外小心,因為一旦刪除文件,就無法輕鬆恢復它。與您分享Linux,Java,Python,編程,大數據,人工智慧等。