我試圖撥打shutil.rmtree(some_folder)
,但它導致另一個進程正在使用子樹中某個文件的錯誤。情況並非如此,所以我假設權限設置不正確。更改文件夾,所有子文件夾和所有文件的權限
如何將一些根下的所有子文件夾和文件的權限更改爲可寫,因此我可以調用shutil.rmtree並刪除它們?
感謝
我試圖撥打shutil.rmtree(some_folder)
,但它導致另一個進程正在使用子樹中某個文件的錯誤。情況並非如此,所以我假設權限設置不正確。更改文件夾,所有子文件夾和所有文件的權限
如何將一些根下的所有子文件夾和文件的權限更改爲可寫,因此我可以調用shutil.rmtree並刪除它們?
感謝
在與chmod
命令提供了一個平臺,你可以這樣做:
subprocess.call(['chmod', '-R', '+w', some_folder])
假設some_folder
是一個字符串,是全路徑要修改的文件夾。
它是大寫'-R'。 –
謝謝。糾正。 – multipleinterfaces
使用os
:
import os
def change_permissions_recursive(path, mode):
for root, dirs, files in os.walk(path, topdown=False):
for dir in [os.path.join(root,d) for d in dirs]:
os.chmod(dir, mode)
for file in [os.path.join(root, f) for f in files]:
os.chmod(file, mode)
如果你只想讓他們寫額外的標誌:
import os, stat
def get_perm(fname):
return stat.S_IMODE(os.lstat(fname)[stat.ST_MODE])
def make_writeable_recursive(path):
for root, dirs, files in os.walk(path, topdown=False):
for dir in [os.path.join(root, d) for d in dirs]:
os.chmod(dir, get_perm(dir) | os.ST_WRITE)
for file in [os.path.join(root, f) for f in files]:
os.chmod(file, get_perm(file) | os.ST_WRITE)
如果您使用的是Windows,這可能無法正常工作,請參閱的文檔os.chmod
。
對於Py3 +我相信常數應該是'stat.S_IWRITE' [等等](https://docs.python.org/3/library/os.html#os.chmod)。 – Jens
你在哪個平臺上?什麼是您的文件系統?什麼是確切的錯誤信息? –
你在Windoze嗎? –