Python 子进程 bash 命令输出文件被阻止
Python subprocess bash command with output file blocked
我有以下运行 LM_CMD
程序并将输出写入文件 fp_arpa
的代码。紧接着我有另一个函数读取和处理该文件 (fp_arpa
)。但是,根据函数,文件为空,而在文件系统中则不是。我猜子进程会锁定文件指针,直到整个 Python 程序完成(虽然我可能错了)。我怎样才能避免这个问题?
base_cmd = '%s -lm %s' % (LM_CMD, fp_arpa)
subprocess.Popen([base_cmd], shell=True)
some_function_that_processes(fp_arpa)
subprocess.Popen
returns 进程启动后立即。它不会等待进程完成。改为调用 subprocess.check_call()
:
#!/usr/bin/env python
import subprocess
subprocess.check_call([LM_CMD, '-lm', fp_arpa])
我有以下运行 LM_CMD
程序并将输出写入文件 fp_arpa
的代码。紧接着我有另一个函数读取和处理该文件 (fp_arpa
)。但是,根据函数,文件为空,而在文件系统中则不是。我猜子进程会锁定文件指针,直到整个 Python 程序完成(虽然我可能错了)。我怎样才能避免这个问题?
base_cmd = '%s -lm %s' % (LM_CMD, fp_arpa)
subprocess.Popen([base_cmd], shell=True)
some_function_that_processes(fp_arpa)
subprocess.Popen
returns 进程启动后立即。它不会等待进程完成。改为调用 subprocess.check_call()
:
#!/usr/bin/env python
import subprocess
subprocess.check_call([LM_CMD, '-lm', fp_arpa])