pathlib.Path.chmod(mode)中mode的说明

Sun*_*ear 3 python unix linux pathlib ubuntu-18.04

我可以知道如何在pathlib.Path.chmod(mode) 中定义模式。我在 python 3.6 文档中没有找到关于如何定义模式的任何解释或解释链接。例如

>>> p = Path( 'filename.ext' )
>>> p.stat().st_mode
33204
Run Code Online (Sandbox Code Playgroud)

这五个数字单独或一起的含义是什么?我想将值更改为,以便所有者具有执行权限。如何计算用于模式的值?

替代解决方案:

我要感谢@falsetru 的回答和评论。此外,我喜欢分享一种非数学方法来查找可以提交给pathlib.Path.chmod(mode)命令的所需权限级别的“模式值” 。

以下是步骤:

  1. 确定您想要的文件权限级别。
  2. 使用文件管理器(例如 nautilus)选择文件,然后右键单击它,单击“属性”,然后左键单击“权限”选项卡。您可以在此处为文件设置所需的权限级别。
  3. 接下来,从 Python 解释器提交上述命令。它将返回您想要的权限级别的相应模式值。然后你可以在pathlib.Path.chmod(mode)命令中使用它。

fal*_*tru 6

如果您按照链接 ( os.chmod),您将了解每个位的含义。

通过将模式值转换为八进制表示,它会更容易阅读:

>>> oct(33204)
'0o100664'
Run Code Online (Sandbox Code Playgroud)
  • 常规文件: 0o100000 ( 33204 & S_IFREG-> 非零 OR S_ISREG(33204)-> True) S_IFREGS_ISREG
  • 所有者可读写:0o000600 (rw-)
  • 按组读写:0o000060 (rw-)
  • 其他人可读:0o000004 (r--)

更新

stat.filemode 将数字转换为人类可读的格式:

>>> stat.filemode(33204)
'-rw-rw-r--'
Run Code Online (Sandbox Code Playgroud)