我试图调用shutil.rmtree(some_folder),但它导致错误,另一个进程正在使用子树中的某个文件.事实并非如此,所以我假设权限设置不正确.
如何将某些root下的所有子文件夹和文件的权限更改为可写,因此我可以调用shutil.rmtree并将其删除?
谢谢
在具有chmod可用命令的平台上,您可以执行以下操作:
subprocess.call(['chmod', '-R', '+w', some_folder])
Run Code Online (Sandbox Code Playgroud)
假设这some_folder是一个字符串,它是您要修改的文件夹的完整路径.
使用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)
Run Code Online (Sandbox Code Playgroud)
如果你只是想让它们在标志之外可写:
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)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Windows,则可能无法正常运行,请参阅文档os.chmod.