我正试图找到与此PHP代码等效的Python码,但我不知道如何翻译0640
:
PHP代码:
chmod($credentials_file, 0640);
chown($credentials_file, 'webapp');
我在这里查看os.chmod文档,但我不确定0640
如何等同于stat.SOMETHING_HERE
。有人知道如何将这两行移植到Python吗?
0640
是一个八进制数字(这是前导0
的含义,它不算作数字),表示以下权限(例如维基百科):
- 第一位是文件的所有者,并且(由于
6
是二进制的110
,其中位分别为read、write和ex执行权限)意味着读写权限 - 第二个数字用于组,并且(由于
4
是二进制的100
)表示只读;以及 - 第三个数字表示其他用户,表示没有权限(
0
是000
!)
因此,在这种情况下,您希望组合S_IRUSR
(用户读取)、S_IWUSR
(用户写入)和S_IRGRP
(组读取):
>>> import stat
>>> oct(stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
'0640'
您可以通过以二进制形式显示八进制数来单独查看每个权限:
>>> bin(0640)
'0b110100000'
其分解如下:
# USR
0b 110 100 000
# ^ user read (yes)
# ^ user write (yes)
# ^ user execute (no)
# GRP
0b 110 100 000
# ^ group read (yes)
# ^ group write (no)
# ^ group execute (no)
# OTH
0b 110 100 000
# ^ other read (no)
# ^ other write (no)
# ^ other execute (no)