Subprocess.communicate()每次返回一个字符而不是一行

0 投票
1 回答
569 浏览
提问于 2025-04-16 19:56

我在Windows上运行Python 2.7.2,想用subprocess来自动化一些命令行工具,代码如下:

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 p.communicate() 

那么完整的输出就能正确显示了。

我尝试了所有的缓冲区大小选项,但都没有解决问题。

1 个回答

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

撰写回答