Python 更改文件夹、所有子文件夹和所有文件的权限

Python 更改文件夹、所有子文件夹和所有文件的权限,python,Python,我试图调用shutil.rmtree(some_文件夹),但另一个进程正在使用子树中的某个文件,这导致了一个错误。事实并非如此,因此我假设权限设置不正确 如何将某个根目录下的所有子文件夹和文件的权限更改为可写,以便调用shutil.rmtree并删除它们 感谢在使用chmod命令的平台上,您可以执行以下操作: subprocess.call(['chmod', '-R', '+w', some_folder]) 假设some\u folder是一个字符串,它是要修改的文件夹的完整路径。使用os

我试图调用
shutil.rmtree(some_文件夹)
,但另一个进程正在使用子树中的某个文件,这导致了一个错误。事实并非如此,因此我假设权限设置不正确

如何将某个根目录下的所有子文件夹和文件的权限更改为可写,以便调用shutil.rmtree并删除它们


感谢在使用
chmod
命令的平台上,您可以执行以下操作:

subprocess.call(['chmod', '-R', '+w', some_folder])
假设
some\u 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)
如果您只是想使它们成为可写的附加标志:

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上,这可能无法正常工作,请参阅的文档。

您在什么平台上?你的文件系统是什么?确切的错误信息是什么?对于Py3+,我认为常量应该是
stat.S\u IWRITE