我有一个用于执行终端命令的简单函数,它看起来像这样:
import subprocess
def func(command):
subprocess.run(command, shell=True)
func('python my_python_program.py --par my_parameter_file.py')
该函数确实执行了命令,但应该有一些来自我正在执行的程序的输出/打印语句。该程序大约需要 10 分钟才能执行,并创建大量打印语句。当我刚刚在终端中执行命令时,它们就会显示,但
subprocess
不会显示它们。
使用
subprocess
时如何打印输出?您能否为我提供 2 个不同的选项 - 1)如果我希望输出仅打印在屏幕上,立即每行,而不是命令完全完成后的所有内容; 2)如果我想将输出保存到文件中,也立即逐行保存? Tnx!
基于 C.Nivs 的第二个链接,我在另一篇文章中找到了 answer,它通过使用名为 comman_runner 的新免费软件包完美解决了我的问题。这是我的代码的样子,并将产生我想要的屏幕输出:
# pip install command_runner # install the package
from command_runner import command_runner # import the package
def func(command):
exit_code, output = command_runner(command, shell=True, live_output=True)
func('python my_python_program.py --par my_parameter_file.py')