我正在使用 tempfile.mkstemp 生成随机可用的文件名并使用 os.fdopen 编写一些内容。然后我通过 celery 将文件名传递给任务。

此任务打开文件,处理内容,最后删除文件。
在测试这工作正常,但是我意识到这会在我的实时环境中中断,在该环境中运行任务的用户与创建文件的用户不同。

这意味着用户无法打开文件,因为 tempfile.mkstemp 将权限设置为 600 ( -rw------- )。

我不能让两个进程由同一个用户运行,那么有没有办法修改 tempfile.mkstemp 设置的文件权限?

我在 Ubuntu 14.04 上运行 Python 3.6。

最佳答案

鉴于您在调用 mkstemp() 后使用 os.fdopen,您最好使用 tempfile.NamedTemporaryFile(delete=False)。它返回一个 Python 文件对象而不是 fd

无论哪种方式,返回的文件都将具有 mode=0600,因此您需要更改它。使用 os.fchmod(temp_file.fileno(), 0640) 或类似的(根据您的需要更改模式)。

关于python - tempfile.mkstemp 权限设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51063378/

10-10 02:15