14

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

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

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

Error:  <type 'exceptions.IOError'>

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

谁能给我光?其他模式代码是什么?

4

4 回答 4

21

创建文件夹后,您可以设置权限os.chmod

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

000 111 111 000
    rwx rwx rwx

第一个rwx是所有者,第二个是组,第三个是世界

r=读,w=写,x=执行

您最常看到的权限是
7 读/写/执行 - 您需要执行目录才能看到内容
6 读/写
4 只读

当您使用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 接受任一语法,因此您选择的语法取决于您是要向前兼容还是向后兼容。

于 2009-10-26T20:42:58.657 回答
5

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

于 2009-10-26T20:47:50.503 回答
3

Python手册说:

os.mkdir(path[, mode])

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

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

于 2009-10-26T22:06:37.173 回答
1

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

于 2009-10-27T01:52:16.197 回答