gpt4 book ai didi

Python 不会覆盖 777 文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:21 36 4
gpt4 key购买 nike

我有一个输出 pid 的脚本。我将权限更改为 777。每个后续实例都将使用新的 pid 覆盖该文件。尽管有 777 权限,python 仍会报告操作系统错误,除非执行脚本的用户是文件的所有者,否则不允许执行该操作。 (当然,我可以从 shell 中删除/覆盖文件)。

#!/usr/bin/python

import os
import time

f = open("/tmp/test.txt", 'w')
f.write("Hello, file!\n")
os.chmod("/tmp/test.txt", 0777)
f.close()

$ /tmp/myscript.py # fine
$ sudo -u other_user /tmp/myscript.py #not fine -- gives error

最佳答案

在 Linux 中,只有创建文件的用户或根用户才能更改其权限。如果调用 open 时文件不存在,则您是新文件的所有者,可以更改其权限。当文件已经存在时,它只是被截断并且现有权限仍然有效。只捕获并忽略错误是合理的,因为它只会在权限设置正确后发生。

如果您在父目录中有适当的权限,您可以删除该文件并每次创建一个新文件。但这对/tmp 不起作用,因为设置了粘性位并且只有所有者才能删除该文件。

关于Python 不会覆盖 777 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29680604/

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