Python mkdir 给了我错误的权限

发布于 2024-08-08 22:18:24 字数 249 浏览 10 评论 0原文

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

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

当我尝试创建文件时,出现 IOError。

Error:  <type 'exceptions.IOError'>

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

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

I'm trying to create a folder and create a file within it.

Whenever i create that folder (via Python), it creates a folder that gives me no permissions at all and read-only mode.

When i try to create the file i get an IOError.

Error:  <type 'exceptions.IOError'>

I tried creating (and searching) for a description of all other modes (besides 0770).

Can anyone give me light? What are the other mode codes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

双马尾 2024-08-15 22:18:24

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

是以8进制编写的,如果将其转换为二进制,它将是

000 111 111 000
    rwx rwx rwx

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

r=read,w=write,x=execute

您最常看到的权限是
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 接受任一语法,因此您选择的语法取决于您想要向前兼容还是向后兼容。

After you create the folder you can set the permissions with os.chmod

The mod is written in base 8, if you convert it to binary it would be

000 111 111 000
    rwx rwx rwx

The first rwx is for owner, the second is for the group and the third is for world

r=read,w=write,x=execute

The permissions you see most often are
7 read/write/execute - you need execute for directories to see the contents
6 read/write
4 readonly

When you use os.chmod it makes most sense to use octal notation
so

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

Remember I said you usually want directories to be "executable" so you can see the contents.

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

Note: The syntax of 0o777 is for Python 2.6 and 3+. otherwise for the 2 series it is 0777. 2.6 accepts either syntax so the one you choose will depend on whether you want to be forward or backward compatible.

如痴如狂 2024-08-15 22:18:24

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

You've probably got a funky umask. Try os.umask(0002) before making your directory.

最近可好 2024-08-15 22:18:24

Python 手册说:

os.mkdir(路径[,模式])

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

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

The Python manual says:

os.mkdir(path[, mode])

Create a directory named path with numeric mode mode. The default mode is 0777 (octal). On some systems, mode is ignored. Where it is used, the current umask value is first masked out. Availability: Unix, Windows.

Have you specified a mode - which mode did you specify. Did you consider specifying a mode explicitly? And what is the program's umask value set to"

沉溺在你眼里的海 2024-08-15 22:18:24

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

Since your on Windows, this might be a crapshoot. Make sure there aren't any wacky special permissions on the parent directory or with the policy settings that defines the permissions any directories created by your account get. I doubt this is a python problem as I haven't been able to recreate the problem on Windows with a relatively vanilla Vista install.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文