我正在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选项都无济于事。
答案 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