我必须将命令输出输出到python中的变量。
我正在使用python子进程
from subprocess import *
var1 = check_output(["some_command"])
Above Command成功将命令输出加载到变量var1
我想在终端上看到实时输出。我可以使用下面的呼叫
call(["some command"])
现在,我想同时实现两件事,即将输出加载到变量并将输出显示到终端。请帮我。
答案 0 :(得分:0)
对于基于行的实时输出,我认为这会起作用:
proc = subprocess.Popen(["some_command"], stdout=subprocess.PIPE)
var1 = []
while True:
line = proc.stdout.readline()
if not line:
break
var1.append(line)
sys.stdout.write(line)
var1 = "".join(var1)
readline
(for line in proc.stdout
)的迭代器版本在这里不起作用,因为它执行过多的缓冲。您也可以使用proc.stdout.read(1)
代替readline()
来完全禁用缓冲。
请注意,由于sys.stdout
是面向文本的(使用Unicode),但是进程却是基于字节的(尽管后者可以在最近的Python 3版本中进行更改),因此这对Python 3来说不是很好。>