【问题标题】:Subprocess.communicate() returns char at a time rather than linesSubprocess.communicate() 一次返回字符而不是行
【发布时间】:2011-06-20 18:37:25
【问题描述】:

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

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 2019-09-15
      • 1970-01-01
      相关资源
      最近更新 更多