我正在尝试创建一个文件夹并在其中创建一个文件。
每当我创建该文件夹(通过Python)时,它会创建一个文件夹,该文件夹根本不提供任何权限和只读模式。
当我尝试创建文件时,我得到一个IOError。
Error: <type 'exceptions.IOError'>
我尝试创建(和搜索)所有其他模式的描述(除了0770)。
有人能给我点光吗?其他模式代码是什么?
答案 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上重新创建问题。