Subprocess.communicate()一次返回char而不是行

时间:2011-06-20 18:37:26

标签: python subprocess

我正在Windows上运行Python 2.7.2并尝试使用子进程自动执行大量命令行工具,如下所示:

p = subprocess.Popen(mip4 + " status", bufsize=1, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
stdout, stderr = p.communicate()
for line in stdout:
    print line

print语句不是生成一整行输出,而是打印一个字符后跟一个换行符。

但是,如果我这样做:

print p.communicate() 

正确打印完整输出。

我尝试过所有的bufsize选项都无济于事。

1 个答案:

答案 0 :(得分:0)

如果您的目标是获取命令的output,则应使用check_output

In [120]: for x in subprocess.check_output(["/bin/sh", "-c", "ls -   a"]).split('\n'):
                print x
        .....:     
        .....:     
        .
        ..
        cluster.py
        database1.py