我正在编写一个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)
Run Code Online (Sandbox Code Playgroud)
这似乎不优雅.有一个更好的方法吗?也许是一种打开临时文件权限的方法,以便子进程可以获得它?
我正在尝试使用Python在Windows操作系统上创建和写入临时文件.我使用Python模块tempfile创建了一个临时文件.
但是当我去写那个临时文件时,我收到了一个错误Permission Denied.我不允许写临时文件吗?!难道我做错了什么?如果我想创建和写入临时文件,我应该如何在Python中执行此操作?我想在临时目录中创建临时文件以用于安全目的而不是在本地(在.exe执行的目录中).
IOError: [Errno 13] Permission denied: 'c:\\users\\blah~1\\appdata\\local\\temp\\tmpiwz8qw'
temp = tempfile.NamedTemporaryFile().name
f = open(temp, 'w') # error occurs on this line
Run Code Online (Sandbox Code Playgroud)