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