我正在使用 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/