【发布时间】:2021-09-05 04:08:46
【问题描述】:
我正在尝试使用 python 执行一些 bash 命令。我想向用户显示命令的实时输出并捕获它。
一个示例是这样的
import subporcess
# This will store output in result but print nothing to terminal
result = subprocess.run(['ls', '-lh'], check=True, universal_newlines=True, stdout=subprocess.PIPE)
print(result.stdout) # STD OUTPUT
# This will print everything to terminal result will be empty
result = subprocess.run(['ls', '-lh'], check=True, universal_newlines=True)
print(result.stdout) # OUTPUT = None
【问题讨论】:
-
您可以使用
.check_output而不是.run。看看documentation -
如果您查看函数参数,您会发现没有 stdout 选项。即 checkout 只会将输出返回到 python,但不会在控制台上打印任何内容。
-
你可以自己
print这个到控制台.. -
是的.. 但是我试图运行的过程大约需要
30 min直到那时用户会认为程序已经死了。 -
在这种情况下,您可以继承
subprocess.PIPE并使其同时在两个地方写入输出。
标签: python subprocess