如何在Python中使用bitshift操作文件系统八进制

2024-05-13 01:59:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表示Linux文件权限的八进制。 权限当前为0o640,我想将组位设置为6(因此0o660)。我看到我可以在第n个位置here设置位,但是我得到的结果很奇怪,我想这是因为八进制表示

我试过:

perm = 0o640
# Set the bit in the 2nd place (index 1) to 6. 
new_perm = perm | (6<<1)
# new_perm is now 0o634 (wanted 0o660).

我做错了什么我想

我还想知道在Python中使用八进制而不是常规整数处理文件权限有什么好处

谢谢


Tags: 文件thetoin权限newindexhere
1条回答
网友
1楼 · 发布于 2024-05-13 01:59:26

<<将数字移位一位。对于您想要的答案,您应该将0o600移位3

perm = 0o600
new_perm = (perm  & 0o707) | (6<<3)
print(new_perm == 0o660) # True

根据注释,我们应该首先将要归零的位设为零,然后使用|

(perm & 0o707)这部分代码使这种情况发生

相关问题 更多 >