我正在编写一个 Python 脚本,该脚本需要将一些数据写入临时文件,然后创建一个运行 C++ 程序的子进程,该程序将读取临时文件。我正在尝试使用NamedTemporaryFile
它,但根据文档,
在命名的临时文件仍处于打开状态时,该名称是否可用于第二次打开文件,因平台而异(在 Unix 上可以这样使用;在 Windows NT 或更高版本上不能)。
事实上,在 Windows 上,如果我在写入后刷新临时文件,但在我希望它消失之前不要关闭它,子进程将无法打开它进行读取。
我正在通过创建文件来解决这个问题,在生成delete=False
子进程之前关闭它,然后在完成后手动删除它:
fileTemp = tempfile.NamedTemporaryFile(delete = False)
try:
fileTemp.write(someStuff)
fileTemp.close()
# ...run the subprocess and wait for it to complete...
finally:
os.remove(fileTemp.name)
这似乎不优雅。有一个更好的方法吗?也许是一种打开临时文件权限的方法,以便子进程可以访问它?