python创建名为temporaryfile的临时文件并在其上调用子进程

标签 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。 我应该如何使用临时文件才能执行它?

最佳答案

正如 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)

关于python创建名为temporaryfile的临时文件并在其上调用子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28410137/

相关文章:

python-在多个文件上运行脚本

Python subprocess.Popen stdin 干扰 stdout/stderr

PostgreSQL 临时文件使用率非常高

python - 如何在 Python 中写入临时文件并再次从中读取?

bash - shell脚本中临时目录下的临时操作

Python 调色板相机框架非常慢

python - 如何从函数外部使用flask变量以便稍后在javascript中使用?

python - 创建 super 用户时创建日期行

Python geopy 安装

Python 子进程、子 shell 和重定向