Вот ситуация:
У меня есть команда, которую я выполняю:
import subprocess
foo = subprocess.Popen('ls /', shell=True, stdout=subprocess.PIPE,\
stderr=subprocess.STDOUT)
Довольно просто, верно? И я понял, что могу делать что-то с выводом с помощью .communicate()
, например:
print foo.communicate()
Прекрасно работает и выдает вывод, который следует из документации для subprocess.communicate, кортеж:
('bin\nboot\ncdrom\n[...stuff redacted for brevity...]tmp\nusr\nvar\nvmlinuz\n', None)
Обратите внимание на новые строки \n
. И я обнаружил, что просто запрос первого элемента кортежа приводит к выводу с символами новой строки, например:
>>> print foo.communicate()[0]
bin
boot
cdrom
[...stuff redacted for brevity...]
tmp
usr
var
vmlinuz
Но я не понимаю, ПОЧЕМУ печать только с первым элементом приводит к переводу строки. Не поймите меня неправильно, это здорово, и я рад, что могу сделать это без петли, но я бы хотел понять, что происходит.
Заранее спасибо,
- Джед