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