删除python中的文件权限

时间:2018-03-08 14:11:47

标签: python file permissions chmod

我正在尝试删除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

calling windows' icacls from python

https://docs.python.org/2/library/os.html#os.chmod

3 个答案:

答案 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