如何让Python中的子进程立即打印输出?

问题描述 投票:0回答:1

我有一个用于执行终端命令的简单函数,它看起来像这样:

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!

python shell subprocess
1个回答
0
投票

基于 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')
© www.soinside.com 2019 - 2024. All rights reserved.