子流程Popen重新分配输出

时间:2019-03-09 21:58:54

标签: python python-2.7 subprocess popen

我正在尝试在Python 2.7中使用Popen执行shell cmds。我可以获取标准输出并打印它,但是只能打印一次。当我尝试再次打印它或将输出变量重新分配给另一个时,它为空白。这是我的代码:

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

如果命令无效(将PDocs用作不正确的文件夹名称),则结果:

'/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并进行打印。有什么建议吗?

0 个答案:

没有答案