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

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

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

Error:  <type 'exceptions.IOError'>

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

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

有帮助吗?

解决方案

创建文件夹后,您可以使用 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接受任一语法,因此您选择的语法将取决于您是要向前还是向后兼容。

其他提示

你可能有一个时髦的umask。在创建目录之前,请尝试 os.umask(0002)

Python手册说:

os.mkdir(path[, mode])
     

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top