【发布时间】:2019-05-25 00:09:47
【问题描述】:
我正在尝试执行以下操作:
编写检查“files”目录中每个文件的权限的代码。 如果“组”的权限不是“rwx”,则更改该文件的权限 如下: '用户' 可以 rwx, 'group' 可以 rwx, 'other' 什么都做不了。
我尝试了以下方法:
import os
import stat
path = '/home/myname/files'
for r, d, f in os.walk(path):
for file in f:
if not os.access(file, stat.S_IRWXU):
print("User cannot rwx: ", file)
os.chmod(file, stat.S_IRWXU)
if os.access(file, stat.S_IRWXG) == 0:
print("Group cannot rwx: ", file)
os.chmod(file, stat.S_IRWXG)
但是,我注意到两件事。
- 无论我尝试什么,我都无法检查它是否不是 rwx。它会忽略 'if not',并且 '== 0' 也不起作用。
- 调用 S_IRWXU 会更改我想要的权限,但是当我稍后调用“S_IRWXG”时,用户权限会消失。这不是我想要的。 我该如何解决这两个问题?
【问题讨论】:
-
您不能将
stat.S_IRWXU传递给os.access。您只能传递R_OK、W_OK和X_OK的组合。见:docs.python.org/2/library/os.html#os.access -
你最好还是检查
os.stat,因为你明确需要检查组权限,而os.access只检查当前用户是否有访问权限。