Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python更改文件权限的Chmod问题_Python_Windows_Python 2.7_Chmod - Fatal编程技术网

使用python更改文件权限的Chmod问题

使用python更改文件权限的Chmod问题,python,windows,python-2.7,chmod,Python,Windows,Python 2.7,Chmod,我希望使用python脚本更改目录中所有用户对所有文件的读写和执行权限。但是,在运行脚本后,当我通过右键单击检查文件权限时,它仅显示我和组everyone的权限,并且它仅具有读取权限。我在以下脚本中是否有任何错误: import os import pdb for dirpath, dirnames, filenames in os.walk('M:\intra\EU'): for filename in filenames: path = os.path.join(d

我希望使用python脚本更改目录中所有用户对所有文件的读写和执行权限。但是,在运行脚本后,当我通过右键单击检查文件权限时,它仅显示我和组everyone的权限,并且它仅具有读取权限。我在以下脚本中是否有任何错误:

import os
import pdb

for dirpath, dirnames, filenames in os.walk('M:\intra\EU'):
    for filename in filenames:
        path = os.path.join(dirpath, filename)
        os.chmod(path, 0o777) # for example

根据委员会的说明:

尽管Windows支持chmod(),但您只能设置文件的 带有它的只读标志(通过
stat.S\u IWRITE
stat.S\u IREAD
常量或相应的整数值)。所有其他位都是 忽略

我在这里找到了一个解决方案:)


建议的解决方案在Python3上不起作用(模块不可用)。我采用了不同的方法,使用Windows命令行

在我的情况下,我需要“本地服务”帐户才能获得权限。我做到了:

    import subprocess
    args = ["icacls", directory,
            "/grant:r", 'LOCAL SERVICE:(OI)(CI)MF']
    subprocess.check_call(args)
请注意,此权限似乎仅在对目录进行设置时有效。出于安全原因,确保“目录”实际存在也是一个好主意


还请注意,“本地服务”可能使用翻译后的名称。例如,在德国语言环境中,它是“Lokaler Dienst”。

谢谢falsetru,是否有其他解决方案,我如何设置权限,以便其他用户可以编辑我使用python脚本创建的文件。我的python脚本在共享目录中创建了一些文件,我希望其他人也能够编辑这些文件。我不能手动操作,因为这些文件太多了。我如何在Windows中实现这一点的任何想法都是我们允许访问的目录;M:\intra\EU'?我必须把我的凭证放在LookupAccountName中吗?这些模块在Python3中似乎不可用。我在这里发布了一个不同的方法作为另一个答案。
    import subprocess
    args = ["icacls", directory,
            "/grant:r", 'LOCAL SERVICE:(OI)(CI)MF']
    subprocess.check_call(args)