栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Python3中设置文件权限?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Python3中设置文件权限?

好。让我们从头开始。如果您知道linux,

chmod
那么您已经是理解的正确途径。

在Python 2中,您可以简单地在Django项目中执行以下操作:

>>> os.chmod('manage.py', 0666)

现在您将看到权限已更改:

git diffdiff --git a/manage.py b/manage.pyold mode 100755new mode 100644

您刚刚看到的Python调用与在bash中执行的操作直接等效:

chmod 0666 manage.py

在更高版本的Python中,您可以使用

os
带有八进制数字的函数:

>>> os.chmod('manage.py', 0o666)

一开始可能看起来很奇怪。但这只是pep3127中引入的新语法。因此

0
,您可以在Python
0o
后面加上一个八进制数,而不是在Python后面加上一个八进制数。

最后,

stat
模块具有数字常量,您可以将其与按位或运算结合使用。它很冗长,但让我们看一下。

>>> stat.S_IRUSR  # this means user read permissions256

看起来像一个整数。但是实际上是由解释为二进制数

os.chmod
,因此您应该这样阅读:

>>> "{0:b}".format(stat.S_IRUSR)'100000000'>>>"{0:b}".format(stat.S_IWUSR)'10000000'

好的,这很令人困惑,但是结帐

len
每个结果,前者要长1位

>>> len("{0:b}".format(stat.S_IWUSR))8>>> len("{0:b}".format(stat.S_IRUSR))9

我们可以结合使用这些

stat
常数以获得适当的所需文件模式:

>>> "{0:b}".format(stat.S_IRUSR|stat.S_IWUSR) # this is read and write for the user'110000000'

如果您想知道

|
这里的管道不是底部。这是按位OR。按位组合使用两个正数位,结果为9,前两位设置为1。这意味着用户可以读写文件。

检查一下:

>>> "{0:b}".format(stat.S_IRUSR|stat.S_IWUSR|stat.S_IWGRP|stat.S_IRGRP)'110110000'

这开始看起来像

chmod
bash中通常的那样:

$ chmod 0660 manage.py$ ls -l manage.py -rw-rw---- 1 oznt oznt 805 Mar 31 16:38 manage.py

Bash不仅代表1或0,而且代表其含义。因此从左起第2位是用户的读许可,第3位是用户的写许可。接下来的一组位是组权限,依此类推。

最后,您可以将

666
bash中的模式与此Python中的模式相结合:

os.chmod('manage.py', stat.S_IWGRP | stat.S_IRGRP | stat.S_IRUSR | stat.S_IWUSR | stat.S_IWOTH | stat.S_IROTH)

如果时间太长,请再次检查您可以执行以下操作:

os.chmod('manage.py', 0o666)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号