gpt4 book ai didi

python - 你如何在python中创建一个具有其他用户可以写入权限的文件

转载 作者:太空狗 更新时间:2023-10-29 17:35:41 26 4
gpt4 key购买 nike

我如何在 python (3) 中创建一个其他用户也可以编写的文件。到目前为止,我已经做到了这一点,但它改变了

os.chmod("/home/pi/test/relaxbank1.txt", 777)
with open("/home/pi/test/relaxbank1.txt", "w") as fh:
fh.write(p1)

我得到了什么

---sr-S--t 1 root root 12 Apr 20 13:21 relaxbank1.txt

预期(在命令行中执行 $ sudo chmod 777 relaxbank1.txt)

-rwxrwxrwx 1 root root 12 Apr 20 13:21 relaxbank1.txt

最佳答案

如果您不想使用 os.chmod 并且希望创建具有适当权限的文件,那么您可以使用 os.open创建适当的文件描述符,然后打开描述符:

import os

# The default umask is 0o22 which turns off write permission of group and others
os.umask(0)

descriptor = os.open(
path='filepath',
flags=(
os.O_WRONLY # access mode: write only
| os.O_CREAT # create if not exists
| os.O_TRUNC # truncate the file to zero
),
mode=0o777
)

with open(descriptor, 'w') as fh:
fh.write('some text')
# the descriptor is automatically closed when fh is closed

使用自定义的 opener 将使事情变得更容易并且更不容易出错。 open将根据请求的模式 (w) 为我们的 opener 生成适当的 flags:

import os

os.umask(0)


def opener(path, flags):
return os.open(path, flags, 0o777)


with open('filepath', 'w', opener=opener) as fh:
fh.write('some text')

Python 2 注意:

内置open()在 Python 2.x 中不支持通过文件描述符打开。使用 os.fdopen反而;否则你会得到:

TypeError: coercing to Unicode: need string or buffer, int found.

关于python - 你如何在python中创建一个具有其他用户可以写入权限的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36745577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com