Я пытаюсь выполнить командные оболочки с Popen в Python 2.7. Я могу получить стандартный вывод и распечатать его, но только один раз. Когда я пытаюсь напечатать его снова или переназначить выходную переменную другой, она пуста. Вот мой код:
from subprocess import Popen, PIPE
p = Popen(['cd /home/pi/GDRIVE; drive push -quiet -ignore-conflict PiDocs'],shell=True, stdout=PIPE)
output = p.communicate()[0]
print output
if p.returncode != 0:
print p.returncode
print "Return code was not equal to 0"
print output
print "now reassigning output"
mailtext = output
print "print output again"
print output
print "mailtext is next"
print mailtext
else:
print p.returncode
print "Return code was equal to 0"
Результаты с правильной командой (PiDocs - правильное имя папки):
0
Return code was equal to 0
Результаты, если недопустимая команда (в качестве неверного имени папки использовались PDoc):
'/PDocs' aka '/home/pi/GDRIVE/PDocs' doesn't exist locally nor remotely
8
Return code was not equal to 0
now reassigning output
print output again
mailtext is next
После того, как я распечатаю стандарт, он больше не будет распечатываться или присваиваться mailtext
и печатать. Есть предложения?