3

如果文件不存在,我的 python 脚本会创建一个文件,然后读取和写入该文件。该脚本可以由 root(自动)或用户(刷新请求)运行。我需要创建具有写入权限的文件,以便在这两种情况下都可以重写文件。

import os
f = os.open('file', os.O_CREAT, 0777)
os.close(f)

但是之后...

$ ls -l
-rwxr-xr-x 1 pi pi  0 Feb 22 13:51 file

但是,此脚本有效,我不明白其中的区别:

import os  
f = os.open('file', os.O_CREAT)
os.fchmod(f, 0777)
os.close(f)

...接着:

$ ls -l
-rwxrwxrwx 1 pi pi  0 Feb 22 13:54 file
4

1 回答 1

5

您不是在设置umask,而是在设置文件模式位,这些umask. 根据文档

打开文件文件并根据标志设置各种标志,并可能根据模式设置其模式。默认模式为 0777(八进制), 当前的 umask 值首先被屏蔽掉。...

您的umask值似乎是0022,因此屏蔽了组和其他用户的写入权限。

这个

os.fchmod(f, 0777)

0777尽管有umask值,但显式地将文件权限设置为。

于 2016-02-22T22:04:25.177 回答