Rya*_*son 7 python file-permissions temporary-files
我正在编写一个Python脚本,在其中我将输出写入临时文件,然后在完成并关闭后将该文件移动到其最终目标.当脚本完成时,我希望输出文件具有与正常创建时相同的权限open(filename,"w").实际上,该文件将具有tempfile模块用于临时文件的限制性权限集.
有没有办法让我弄清楚如果我在适当的位置创建输出文件的"默认"文件权限,那么我可以在移动之前将它们应用到临时文件中?
作为记录,我遇到了类似的问题,这是我使用的代码:
import os
from tempfile import NamedTemporaryFile
def UmaskNamedTemporaryFile(*args, **kargs):
fdesc = NamedTemporaryFile(*args, **kargs)
# we need to set umask to get its current value. As noted
# by Florian Brucker (comment), this is a potential security
# issue, as it affects all the threads. Considering that it is
# less a problem to create a file with permissions 000 than 666,
# we use 666 as the umask temporary value.
umask = os.umask(0o666)
os.umask(umask)
os.chmod(fdesc.name, 0o666 & ~umask)
return fdesc
Run Code Online (Sandbox Code Playgroud)
小智 3
umask模块中os有一个函数。您无法获取当前的 umask 本身,您必须设置它并且该函数返回之前的设置。
umask 是从父进程继承的。它描述了创建文件或目录时不应设置哪些位。