Tom*_*ime 14 python file temporary-files
我需要更新一个文件.我读了它,并写出来的变化.但是,我更愿意写入临时文件并将其重命名.
temp = tempfile.NamedTemporaryFile()
tempname = temp.name
temp.write(new_data)
temp.close()
os.rename(tempname, data_file_name)
Run Code Online (Sandbox Code Playgroud)
问题是tempfile.NamedTemporaryFile()
使临时文件中的/tmp
文件系统不同.这意味着os.rename()
失败.如果我使用shlib.move()
而不是我没有"mv"提供的原子更新(对于同一文件系统中的文件,yadda,yadda等)
我知道tempfile.NamedTemporaryFile()
带一个"dir"参数,但data_file_name可能是"foo.txt",在这种情况下dir ='.'; 或者data_file_name可能是" /path/to/the/data/foo.txt
",在这种情况下dir =" /path/to/the/data
".
我真正喜欢的是临时文件是data_file_name +"一些随机数据".这样做的好处是会以一种留下有用线索的方式失败.
建议?
unu*_*tbu 23
您可以使用:
prefix
使临时文件以与原始文件相同的名称开头.dir
指定临时文件的放置位置.os.path.split
从文件名中拆分目录.import tempfile
import os
dirname, basename = os.path.split(filename)
temp = tempfile.NamedTemporaryFile(prefix=basename, dir=dirname)
print(temp.name)
Run Code Online (Sandbox Code Playgroud)
您可以在“ dir”构造函数参数中传递文件位置。如您所愿,它可以工作。
>>> t = tempfile.NamedTemporaryFile(dir="/Users/rafal")
>>> t.name
'/Users/rafal/tmplo45Js'
Run Code Online (Sandbox Code Playgroud)
来源:http : //docs.python.org/library/tempfile.html#tempfile.NamedTemporaryFile