【问题标题】:How can I change the file permissions in Python?如何在 Python 中更改文件权限?
【发布时间】:2015-04-14 18:29:04
【问题描述】:

我正在尝试找到与此 PHP 代码等效的 Python 代码,但我不确定如何翻译 0640:

PHP代码:

chmod($credentials_file, 0640);
chown($credentials_file, 'webapp');

我正在查看 os.chmod 文档 here,但我不确定 0640 如何等同于 stat.SOMETHING_HERE。有谁知道如何将这两行移植到 Python

【问题讨论】:

标签: php python


【解决方案1】:

0640 是一个八进制 数字(即前导0 的含义,不计为数字),表示以下权限(参见例如Wikipedia ):

  • 第一个数字是文件的所有者,并且(因为6在二进制中是110,其中位是read,w rite 和 execute 权限)表示 读写权限;
  • 第二个数字代表,(4 在二进制中是100)表示只读;和
  • 第三位是其他用户,表示没有权限(0000!)

因此,在这种情况下,您希望组合 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)

【讨论】:

  • 正是我需要知道的(而不是“可能重复”的帖子所说的)。谢谢!
  • @Brett 我刚刚意识到我没有明确表示您可以只使用0640 作为os.chmod 的第二个参数; stat 中的常量只是例如stat.S_IWUSR == 128,他们没有什么特别的。
猜你喜欢
  • 2013-04-21
  • 1970-01-01
  • 2011-11-05
  • 2010-12-09
  • 1970-01-01
  • 2013-12-30
  • 2019-09-26
  • 1970-01-01
相关资源
最近更新 更多