如何在Python3中设置文件权限?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Python3中设置文件权限?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2026字,纯文字阅读大概需要3分钟。
内容图文
![如何在Python3中设置文件权限?](/upload/InfoBanner/zyjiaocheng/820/30a63532392a4f11abcb7a27823b2d06.jpg)
Python自己的文档非常简洁,关于如何使用os.fchmod,os.chmod等函数.我对像777这样的数字和像stat.S_IWRITE |这样的表达式感到困惑stat.S_IEXEC.
什么是mode = 0o777我在os模块的一些函数中看到了什么?
你能解释一下这是什么吗?
解决方法:
好.让我们从头开始.如果你知道linux chmod,那么你已经是正确的理解轨道了.
在Python 2中,您可以简单地在Django项目中执行以下操作:
>>> os.chmod('manage.py', 0666)
现在您将看到权限已更改:
git diff
diff --git a/manage.py b/manage.py
old mode 100755
new mode 100644
你刚才看到的Python调用直接相当于在bash中执行:
chmod 0666 manage.py
在以后的Python版本中,您可以使用带八进制数的os函数:
>>> os.chmod('manage.py', 0o666)
这可能在开始时看起来很奇怪.但它只是pep3127中引入的新语法.因此,不是为Python提供0后跟八进制数字,而是使用0o后跟一个八进制数字来提供Python.
最后,stat模块具有数值常量,您可以对它们进行按位OR运算.它非常冗长,但我们来看看吧.
>>> stat.S_IRUSR # this means user read permissions
256
这看起来像一个整数.但实际上它被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'
如果你想知道|这里不是基地的管道.这是bitwise OR.位组合采用两个正位并给出了长度为9的结果,前两位设置为1.这意味着用户可以读取写入文件.
检查一下:
>>> "{0:b}".format(stat.S_IRUSR|stat.S_IWUSR|stat.S_IWGRP|stat.S_IRGRP)
'110110000'
这开始看起来像bash中的常见chmod:
$chmod 0660 manage.py
$ls -l manage.py
-rw-rw---- 1 oznt oznt 805 Mar 31 16:38 manage.py
Bash表示不仅作为1或0的位,而且还表示它们的含义.所以左边第二位是用户的读权限,第三位是用户的写权限.下一组位是组权限,依此类推.
最后,您可以将bash中的模式666与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).
内容总结
以上是互联网集市为您收集整理的如何在Python3中设置文件权限?全部内容,希望文章能够帮你解决如何在Python3中设置文件权限?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。