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

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

报告相同问题?