我正在尝试使用os模块设置umask。请注意,我在我的~/.profile中设置的普通umask是umask 0027。
在bash shell中,
在bash shell中,
umask 0022
将允许创建具有权限的文件
-rw-r--r--
然而,当我们导入os模块并执行以下操作:
os.umask(0022)
[do some other code here that creates a file]
我获取权限的方式是
----------
首先,我该如何让os.umask(mask)的行为像shell中的umask一样?
其次,这两者之间的差异逻辑是什么?
注意:我尝试将0022转换为十进制,以防它期望一个十进制数,具体方法如下:
os.umask(18)
但它给出了权限
-----w--w-
还要注意的是,我试过了
os.umask(00022)
并且
os.mask(0o0022)
这也没有起作用。
old_mask = os.umask(0o000)
然后os.makedirs(./foo/bar)
创建目录时,会按预期设置为777
。而oct(old_mask)
给出的是022
,这是正确的(Unix 上的默认 umask)。 - Stan