python 创建临时文件 namedtemporaryfile 并在其上调用子进程
python create temp file namedtemporaryfile and call subprocess on it
我在生成临时文件并随后执行它时遇到问题。
我的过程看起来很简单:
- 使用 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)
我在生成临时文件并随后执行它时遇到问题。 我的过程看起来很简单: - 使用 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)