python运行外部程序并按字符打印输出

时间:2014-06-03 07:45:55

标签: python-2.7

如何按字符或至少按行打印外部命令的输出? 在命令返回后,此代码将其打印在一个块中。

import subprocess as sub

output, errors = sub.Popen(command, stdout=sub.PIPE, stderr=sub.PIPE, shell=True).communicate()
print output + errors

2 个答案:

答案 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字符的输出。