Python 如何捕获shell命令输出并在终端中实时显示?

Python 如何捕获shell命令输出并在终端中实时显示?,python,python-3.x,subprocess,stdout,Python,Python 3.x,Subprocess,Stdout,我编写了一个函数,它运行外部命令并捕获它们的输出,类似这样 proc = subprocess.run(command_line, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if proc.returncode != 0: 不幸的是,我没有看到长命令在运行时输出。如何有条件地执行此操作,例如,如果loglevel为debug或更高级别?此代码将在收到命令输出后立即打印: 导入系统 导入子流程 尝试:

我编写了一个函数,它运行外部命令并捕获它们的输出,类似这样

    proc = subprocess.run(command_line, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    if proc.returncode != 0:

不幸的是,我没有看到长命令在运行时输出。如何有条件地执行此操作,例如,如果loglevel为debug或更高级别?

此代码将在收到命令输出后立即打印:

导入系统 导入子流程 尝试: proc=子进程Popen( 指挥部, stdout=子流程.PIPE, 外壳=外壳) 除O错误为e外: 打印('执行命令时出错',命令,e) 提升 对于iter中的标准输出线(proc.stdout.readline,b''): 系统标准输出写入(标准输出行) sys.stdout.flush() 进程标准输出关闭()
此代码将在收到命令输出后立即打印:

导入系统 导入子流程 尝试: proc=子进程Popen( 指挥部, stdout=子流程.PIPE, 外壳=外壳) 除O错误为e外: 打印('执行命令时出错',命令,e) 提升 对于iter中的标准输出线(proc.stdout.readline,b''): 系统标准输出写入(标准输出行) sys.stdout.flush() 进程标准输出关闭()
我不知道你在问什么。您想在终端上打印输出的“调试模式”吗?是的,类似这样。我想控制打印输出或不打印输出,但总是捕获它。您是否考虑过使用
检查输出()
而不是
运行()
?如何使用
检查输出()
打开和关闭打印?输出=检查输出(…)。我不知道你要的是什么。您想在终端上打印输出的“调试模式”吗?是的,类似这样。我想控制打印输出或不打印输出,但总是捕获它。您是否考虑过使用
检查输出()
而不是
运行()
?如何使用
检查输出()
打开和关闭打印?输出=检查输出(…)。您可以根据需要打印或不打印