Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python使用默认权限创建目录?_Python_Mkdir - Fatal编程技术网

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

如何使用Python使用默认权限创建目录?,python,mkdir,Python,Mkdir,我想使用与shell的mkdir相同的权限在Python中创建一个目录 报告说: os.mkdir(路径[,模式]) 使用数字模式创建名为path的目录。默认模式 是0777(八进制)。在某些系统上,模式被忽略。在使用的地方, 首先屏蔽当前umask值。如果目录已经存在 存在,则引发OSError 我不想要默认的0777权限,而是从父目录继承的权限。我可以在不查询父目录的权限的情况下执行此操作吗?看起来您可能能够获得正在将文件写入使用的目录的当前权限,然后将该模式传递给mkdir?您已经获得了与

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

报告说:

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

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


我不想要默认的
0777
权限,而是从父目录继承的权限。我可以在不查询父目录的权限的情况下执行此操作吗?

看起来您可能能够获得正在将文件写入使用的目录的当前权限,然后将该模式传递给
mkdir

您已经获得了与shell的
mkdir
相同的权限

对于外壳:

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

dir操作数用作路径参数

S_IRWXU、S_IRWXG和S_IRWXO的按位包含或的值用作模式参数。(如果指定了-m选项,则mode option参数将覆盖此默认值。)

或者,更容易理解(从BSD手册页):

。。。使用由当前umask(2)修改的模式rwxrwx(0777),按指定顺序创建名为操作数的目录

Python的
os.mkdir
做了完全相同的事情:

。。。[t] 他的默认模式是0777。。。首先屏蔽当前umask值

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

新目录的文件权限位应从模式初始化。模式参数的这些文件权限位应通过进程的文件创建掩码进行修改

或者,更容易理解,从FreeBSD/OS X手册页:

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


如果您在非POSIX平台(如Windows)上,Python会尝试模拟POSIX行为,即使本机shell有一个名为
mkdir
的命令,其工作方式不同。这主要是因为此类外壳的主要部分是Windows,它有一个与之同义的
mkdir
,而且它所做的详细操作甚至没有文档记录。简短的回答是:
os.mkdir(somepath)
产生与
mkdir“$somepath”相同的结果
在shell中。@J.F.Sebastian:谢谢你指出我在给出完整答案之前漏掉了简短的答案。编辑。