回答
#!/usr/bin/env python
import os
def nukedir(dir):
if dir[-1] == os.sep: dir = dir[:-1]
files = os.listdir(dir)
for file in files:
if file == '.' or file == '..': continue
path = dir + os.sep + file
if os.path.isdir(path):
nukedir(path)
else:
os.unlink(path)
os.rmdir(dir)
nukedir("/home/mb/test");
以上功能將遞歸刪除任何目錄...
嗨,謝謝你的回覆,但問題是我想通過使用帶有Pythan的WLST來刪除Weblogic日誌文件。 – user1344022
這似乎應該適用於目錄,但它不等同於'rm -rf':如果您嘗試刪除單個文件,則會出錯。另外,儘可能使用Python標準庫中經過良好測試的代碼,而不是編寫自己的代碼。請參閱我的四行'rm -rf'函數:http://stackoverflow.com/a/9559881/260491 –
您不需要編寫自己的代碼。 Python的標準庫已經有遞歸刪除的shutil.rmtree() –
shutil是你在這種情況下的朋友。
http://docs.python.org/2/library/shutil.html#shutil.rmtree
import shutil
shutil.rmtree("/my/path/to/folder/to/destroy")
當谷歌引用的最高結果是這個問題時,其他人是否看到這種躊躇響應中的諷刺? – RussellStewart
雖然有用,但rmtree並不等同:如果嘗試刪除單個文件,則會出錯。在這裏看到我的答案:http://stackoverflow.com/a/9559881/260491 –
可以使用subprocess
模塊:
from subprocess import Popen, PIPE, STDOUT
cmd = 'rm -frv /path/to/dir'
p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
out = p.stdout.read()
print out
我正在審查一些代碼和開發人員使用的子進程rm vs unlink。他們首先使用unlink,然後切換到'subprocess.call(['rm','-f',file_path])'。我只是想明白爲什麼他們會這樣做,如果性能有所提高? – radtek
是您的服務器運行Linux,或者是隻是一個例子嗎?
在Python上,shutil.rmtree()
相當於rm -r
(因爲@Alex已經回答)。所有的python刪除命令(os.unlink(), os.rmdir()
)都沒有檢查,所以它們總是等於rm -f
。
但是,如果您在Windows上,OS will not let you刪除仍然打開的文件;你會得到一個例外。 AFAIK沒有一個沒有特權的流程可以做到這一點。
HI alexis,我的服務器在linux機器上運行。問題是我沒有權限以Weblogic用戶身份登錄。所以我曾經以沒有權限刪除Weblogic日誌文件的用戶身份登錄。我在Pythan上使用WLST。有沒有辦法使用WLST刪除文件。 – user1344022
不知道什麼是WLST或Weblogic。要刪除文件,您必須能夠在有權刪除它的進程下運行_some_程序。如果python的'os.unlink()'不能這樣做,那麼在_any_編程語言中就沒有什麼可以做的了:操作系統不會讓你。 – alexis
雖然很有用,但'rmtree'不是等價的:如果您嘗試刪除單個文件,則會出錯。在這裏看到我的答案:http://stackoverflow.com/a/9559881/260491 –
- 1. 無法使用rm -rf刪除目錄
- 2. rm -rf與-rm -rf
- 3. 在OSX上使用「rm dir -rf」而不是「rm -rf dir」
- 4. 'git rm -rf'
- 5. Linux AWS立即下降rm -rf/*
- 6. 自制libtool安裝卡在`rm -rf`
- 7. 在linux上強制刪除一個使用C++的文件
- 8. 在makefile中使用`$(RM)`而不是`rm -rf`
- 9. 任何人都曾在Linux中嘗試'rm -rf/*'?
- 10. Windows等價於rm -rf [不想刪除父目錄]
- 11. rm:無法刪除'-rf':沒有這樣的文件或目錄
- 12. PHP:shell_exec(「mkdir」)和shell_exec(「rm -rf)
- 13. 解讀RM ./-rf「絕招」
- 14. Linux無法刪除(rm)文件
- 15. 如何檢索在命令行中使用rm -rf在UNIX中刪除的文件?
- 16. 強制刪除緩存
- 17. 無意中刪除了所有文件rm - rf/* ...在我的macbook pro
- 18. gnu linux爲什麼命令「cd xyzdir && rm -rf abcfilename」失敗?
- 19. 如何用jquery強制刪除元素?
- 20. 如何在laravel中強制刪除5.4
- 21. 如何在破折號中運行「rm -rf!(folder)」
- 22. 使用file.delete()或使用rm -rf進行ProcessBuilder調用刪除遠程文件更好?
- 23. 如何提交我使用rm而不是git rm刪除的文件?
- 24. 爲什麼使用'git rm'來刪除文件而不是'rm'?
- 25. S3 AWS RM CLI遞歸,RM刪除鬥
- 26. 如何恢復「rm」刪除的數據?
- 27. Fabric執行時拒絕權限rm -rf
- 28. Ruby Rakefile Sh「rm -rf」中止錯誤
- 29. 「git rm」 - 「-rf」的含義是什麼?
- 30. 有沒有與「rm -rf」相當的python?
你看過[Python庫參考](http://docs.python.org/3/library/os.html#module-os)嗎? –
'force'刪除?你有沒有用的代碼有問題嗎? –
你好,我想刪除使用WLST的日誌文件 – user1344022