我在生成临时文件并随后执行时遇到问题。我的流程似乎很简单:-使用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)