dongwu9972 2015-02-13 16:32
浏览 340
已采纳

如何在Python中更改文件权限?

I am trying to find the equivalent Python code to this PHP code, but I'm not sure how to translate the 0640:

PHP code:

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

I'm looking at the os.chmod documentation here, but I'm not sure how 0640 equates to stat.SOMETHING_HERE. Does anyone have any idea how to port these two lines to Python?

  • 写回答

1条回答 默认 最新

  • douzuan5365 2015-02-13 16:38
    关注

    0640 is an octal number (that is the meaning of the leading 0, which doesn't count as a digit), and means the following permissions (see e.g. Wikipedia):

    • the first digit is for the file's owner, and (as 6 is 110 in binary, where the bits are read, write and execute permission respectively) means read and write permission;
    • the second digit is for the group, and (as 4 is 100 in binary) means read-only; and
    • the third digit is for other users, and means no permissions (0 is 000!)

    Therefore in this case you want to combine S_IRUSR (user read), S_IWUSR (user write) and S_IRGRP (group read):

    >>> import stat
    >>> oct(stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
    '0640'
    

    You can see each permission individually by displaying the octal number in binary form:

    >>> bin(0640)
    '0b110100000'
    

    This breaks down as follows:

     # 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)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛