標籤:

python組織文件(2)

今天繼續分享組織文件的第二部分,永久刪除文件和文件夾。

我們可以利用 os 模塊中的函數,可以刪除一個文件或一個空文件夾。但利用 shutil 模塊, 可以刪除一個文件夾及其所有的內容。

? 用 os.unlink(path)將刪除 path 處的文件。

? 調用 os.rmdir(path)將刪除 path 處的文件夾。該文件夾必須為空,其中沒有任何文件和文件夾。

? 調用 shutil.rmtree(path)將刪除 path 處的文件夾,它包含的所有文件和文件夾都會被刪除。

在程序中使用這些函數時要小心!可以第一次運行程序時,注釋掉這些調用,並且加上 print()調用,顯示會被刪除的文件。這樣做是一個好主意。下面有一個 Python 程序,本來打算刪除具有.txt 擴展名的文件,但有一處錄入錯誤(用粗體突出顯示 ),結果導致它刪除了.rxt 文件。

import os
for filename in os.listdir():
if filename.endswith(.rxt):
os.unlink(filename)

如果你有某些重要的文件以.rxt 結尾,它們就會被不小心永久地刪除。作為替 代,你應該先運行像這樣的程序:

import os
for filename in os.listdir():
if filename.endswith(.rxt):
#os.unlink(filename)
print(filename)

現在 os.unlink()調用被注釋掉,所以 Python 會忽略它。作為替代,你會列印出 將被刪除的文件名。先運行這個版本的程序,你就會知道,你不小心告訴程序要刪 除.rxt 文件,而不是.txt 文件。 在確定程序按照你的意圖工作後 , 刪 除 print(filename) 代碼行 , 取消 os.unlink(filename)代碼行的注釋。然後再次運行該程序,實際刪除這些文件。

用 send2trash 模塊安全地刪除

因為 Python 內建的 shutil.rmtree()函數不可恢復地刪除文件和文件夾,所以 用起來可能有危險。刪除文件和文件夾的更好方法,是使用第三方的 send2trash 模塊。 你可以在終端窗口中運行 pip install send2trash,安裝該模塊。利用 send2trash,比 Python 常規的刪除函數要安全得多,因為它會將文件夾和文件發送到計算機的垃圾箱或回收站,而不是永久刪除它們。如果因程序缺陷而用send2trash 刪除了某些你不想刪除的東西,稍後可以從垃圾箱恢復。

安裝 send2trash 後,在互動式環境中輸入以下代碼:

>>> import send2trash
>>> baconFile = open(bacon.txt, a) # creates the file
>>> baconFile.write(Bacon is not a vegetable.)
25
>>> baconFile.close()
>>> send2trash.send2trash(bacon.txt)

一般來說,總是應該使用 send2trash.send2trash()函數來刪除文件和文件夾。雖 然它將文件發送到垃圾箱,讓你稍後能夠恢復它們,但是這不像永久刪除文件,不會釋放磁碟空間。如果你希望程序釋放磁碟空間,就要用 os 和 shutil 來刪除文件和 文件夾。請注意,send2trash()函數只能將文件送到垃圾箱,不能從中恢復文件。

推薦閱讀:

python TCP編程
Morales的Python學習筆記#C語言擴展 11
[Pipeline] 在Anaconda下用Snakemake構建ChIP-seq流程(2)
Python 解包騷操作,看這篇文章
Windows下安裝Python

TAG:Python |