如何使用默认权限使用Python创建目录?

Nat*_*man 1 python mkdir

我想用Python创建一个目录,使用与shell相同的权限mkdir.

标准Python文档说:

os.mkdir(路径[,模式])

使用数字模式模式创建名为path的目录.默认模式为0777(八进制).在某些系统上,模式被忽略.在使用它的地方,首先屏蔽当前的umask值.如果该目录已存在,则引发OSError.

我不想要默认0777权限,而是从父目录继承的权限.如果不查询父目录的权限,我可以这样做吗?

aba*_*ert 6

你已经让你想与外壳的获得相同的权限mkdir.

使用shell mkdir:

对于每个目录操作数,mkdir实用程序应执行与IEEE Std 1003.1-2001的系统接口卷中定义的mkdir()函数等效的操作,并使用以下参数调用:

目录操作数用作路径参数.

S_IRWXU,S_IRWXG和S_IRWXO的按位包含OR的值用作模式参数.(如果指定了-m选项,则mode-argument参数会覆盖此默认值.)

或者,更可读(来自BSD手册页):

...使用由当前umask(2)修改的模式rwxrwxrwx(0777)按指定的顺序创建名为operands的目录.

Python的os.mkdir功能完全相同:

... [t]默认模式为0777 ...首先屏蔽当前的umask值.

实际上,Python 使用完全相同的参数调用shell文档中提到的完全相同的POSIX mkdir函数.该功能定义为:

新目录的文件权限位应从模式初始化.mode参数的这些文件权限位应由进程'文件创建掩码修改.

或者,更可读的是,来自FreeBSD/OS X联机帮助页:

使用mode指定的访问权限创建目录路径,并由调用进程的umask(2)限制.

如果您使用的是非POSIX平台(如Windows),则Python会尝试模拟POSIX行为,即使本机shell具有一个名称mkdir不同的命令.主要是因为主要的这样的shell是Windows,它具有mdmkdir的同义词,并且甚至没有记录权限的详细信息.

  • 简短的回答是:`os.mkdir(somepath)`在shell中产生与`mkdir"$ somepath"`相同的结果. (2认同)