Python mkdir给了我错误的权限

时间:2009-10-26 20:38:34

标签: python windows filesystems mkdir

我正在尝试创建一个文件夹并在其中创建一个文件。

每当我创建该文件夹(通过Python)时,它会创建一个文件夹,该文件夹根本不提供任何权限和只读模式。

当我尝试创建文件时,我得到一个IOError。

Error:  <type 'exceptions.IOError'>

我尝试创建(和搜索)所有其他模式的描述(除了0770)。

有人能给我点光吗?其他模式代码是什么?

4 个答案:

答案 0 :(得分:18)

创建文件夹后,您可以使用os.chmod

设置权限

mod用base 8编写,如果你把它转换成二进制,那就是

000 111 111 000
    rwx rwx rwx

第一个rwx适用于所有者,第二个适用于群组,第三个适用于世界

R =读,W =写,X =执行

您最常见的权限是 7读/写/执行 - 你需要执行目录来查看内容
6读/写
4 readonly

当您使用os.chmod时,最有意义的是使用八进制表示法 所以

os.chmod('myfile',0o666)  # read/write by everyone
os.chmod('myfile',0o644)  # read/write by me, readable for everone else

记得我说你通常希望目录是“可执行的”,这样你就可以看到内容了。

os.chmod('mydir',0o777)  # read/write by everyone
os.chmod('mydir',0o755)  # read/write by me, readable for everone else

注意:0o777的语法适用于Python 2.6和3+。否则,对于2系列,它是0777。 2.6接受任一语法,因此您选择的语法将取决于您是要向前还是向后兼容。

答案 1 :(得分:5)

你可能有一个时髦的umask。在制作目录之前尝试os.umask(0002)

答案 2 :(得分:3)

Python手册说:

os.mkdir(path[, mode])
     

使用数字模式模式创建名为path的目录。默认模式为0777(八进制)。在某些系统上,模式被忽略。在使用它的地方,首先屏蔽当前的umask值。可用性:Unix,Windows。

您是否指定了模式 - 您指定了哪种模式。您是否考虑过明确指定模式?什么是程序的umask值设置为“

答案 3 :(得分:1)

由于您在Windows上,这可能是一个废话。确保父目录或策略设置没有任何古怪的特殊权限,这些设置定义了帐户创建的任何目录所获得的权限。我怀疑这是一个python问题,因为我无法使用相对普通的Vista安装在Windows上重新创建问题。