python创建临时文件namedtemporaryfile并在其上调用子进程

时间:2015-02-09 12:44:33

标签: python subprocess temporary-files

我无法生成临时文件并在之后执行它。 我的过程看似简单:    - 使用tempfile.NamedTemporaryFile创建临时文件    - 将bash指令写入文件    - 启动子进程以执行创建的文件

以下是实施:

from tempfile import NamedTemporaryFile
import os
import subprocess

scriptFile = NamedTemporaryFile(delete=True)
with open(scriptFile.name, 'w') as f:
  f.write("#!/bin/bash\n")
  f.write("echo test\n")
  os.chmod(scriptFile.name, 0777)

subprocess.check_call(scriptFile.name)

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

1 个答案:

答案 0 :(得分:7)

正如jester112358指出的那样,它只需要关闭文件。 我期待with context为我做这件事:\

这是一个修复

from tempfile import NamedTemporaryFile
import os
import subprocess

scriptFile = NamedTemporaryFile(delete=True)
with open(scriptFile.name, 'w') as f:
  f.write("#!/bin/bash\n")
  f.write("echo test\n")

os.chmod(scriptFile.name, 0777)
scriptFile.file.close()

subprocess.check_call(scriptFile.name)