Subprocess.communicate () возвращает символ за раз, а не строки - PullRequest
0 голосов
/ 20 июня 2011

Я использую Python 2.7.2 в Windows и пытаюсь автоматизировать ряд инструментов командной строки, используя подпроцесс следующим образом:

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() 

, полный вывод будет напечатан правильно.

Я перепробовал все параметры размера буфера, но безрезультатно.

1 Ответ

0 голосов
/ 20 августа 2011

Если ваша цель получить output команды, вы должны использовать check_output.

In [120]: for x in subprocess.check_output(["/bin/sh", "-c", "ls -   a"]).split('\n'):
                print x
        .....:     
        .....:     
        .
        ..
        cluster.py
        database1.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...