python创建名为dtemporaryfile的临时文件,并调用其中的子进程



我在生成临时文件并随后执行时遇到问题。我的流程似乎很简单:-使用tempfile创建临时文件。命名临时文件-将bash指令写入文件-启动子流程以执行创建的文件

以下是实现:

from tempfile import NamedTemporaryFile
import os
import subprocess
scriptFile = NamedTemporaryFile(delete=True)
with open(scriptFile.name, 'w') as f:
  f.write("#!/bin/bashn")
  f.write("echo testn")
  os.chmod(scriptFile.name, 0777)
subprocess.check_call(scriptFile.name)

我在子流程check_call上获得OSError: [Errno 26] Text file busy。我应该如何使用临时文件才能执行它?

正如jester112358所指出的,它只需要关闭文件。我希望上下文为我这样做:\

这里有一个修复

from tempfile import NamedTemporaryFile
import os
import subprocess
scriptFile = NamedTemporaryFile(delete=True)
with open(scriptFile.name, 'w') as f:
  f.write("#!/bin/bashn")
  f.write("echo testn")
os.chmod(scriptFile.name, 0777)
scriptFile.file.close()
subprocess.check_call(scriptFile.name)

最新更新