我正在编写一个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)
这看起来不太优雅。有没有更好的方法来做这个?也许有一种方法可以打开临时文件的权限,以便子进程可以访问它?