我正在尝试删除python中的文件权限。我知道这样做的模式是“000”。但是我看到文件权限的删除也是用标志来完成的,例如“stat.S_IRWXO”。任何人都可以解释我做错了什么
import os
import stat
file_path = 'random file'
os.chmod(file_path, stat.S_IRWXO)
我尝试使用“000”模式:
import os
import stat
file_path = "C:\Script\poop.txt"
os.chmod(file_path, 000)
修改
使用子流程,我能够解决问题。我还没有阅读完整的文档来了解chmod是否与Windows不完全兼容,但它似乎至少受到严重限制。下面是使用Window的“icacls”命令设置权限的代码。这样效率更高。
import subprocess
file_path = r'C:\Script\poop.txt'
subprocess.check_output(['icacls.exe',file_path,'/deny','everyone:(f)'],stderr=subprocess.STDOUT)
SOURCES
答案 0 :(得分:2)
此字符串:
file_path = "C:\Script\poop.txt"
是未转义的。因此,这条道路变得类似于" C:Scriptpoop.txt"。使用原始字符串:
file_path = r"C:\Script\poop.txt"
或使用\\
代替\
。
答案 1 :(得分:0)
您可以尝试使用subprocess模块作为一般解决方案:
import subprocess
file_path = 'file.txt'
subprocess.call(['chmod', '000', file_path])
终端输出ls -la
:
-r--r--r-- 1 kernel 197121 0 Mar 8 10:29 file.txt
答案 2 :(得分:0)
在ms-windows上,您只能使用os.chmod
来设置和删除只读位。所有其他位都被忽略。
基本上,文件权限在ms-windows上的工作方式与在POSIX操作系统上的工作方式不同。您必须使用win32 API调用修改访问控制列表。要在Python中执行此操作,您将需要pywin32。