如何按字符或至少按行打印外部命令的输出? 在命令返回后,此代码将其打印在一个块中。
import subprocess as sub
output, errors = sub.Popen(command, stdout=sub.PIPE, stderr=sub.PIPE, shell=True).communicate()
print output + errors
答案 0 :(得分:0)
您可以访问标准输出流
p = sub.Popen("cmd", stdout=sub.PIPE, stderr=sub.PIPE)
print(p.stdout.readline()) # This read a line
您可以对文件流执行任何操作。
当你在proccess的标准输出中使用readline时,app的主线程等待该proccess在输出上写一些东西。当该进程写入输出时,程序继续。
您必须知道,在从过程中读取一行之前,您需要在流上调用flush()。因为流在将实际值写入之前具有缓存时间。
您可以看到此帖子this is a good explanation of how this work on python
答案 1 :(得分:0)
http://www.cyberciti.biz/faq/python-execute-unix-linux-command-examples/
import subprocess
p = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE)
while True:
out = p.stderr.read(1)
if out == '' and p.poll() != None:
break
if out != '':
sys.stdout.write(out)
sys.stdout.flush()
它按字符打印出cmd字符的输出。