Subprocess.communicate()每次返回一个字符而不是一行
我在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