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

好.让我们从头开始.如果你知道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).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值