当我尝试使用subprocess.Popen
进行git push时 msg, err = subprocess.Popen('git push', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print msg.stdout.read()
我得到错误说:TypeError:'Popen'对象不可迭代
答案 0 :(得分:2)
你将它视为可迭代:
msg, data = ..
这将尝试循环对象并将项目分配给msg
和data
。由于返回的对象不是可迭代的,因此您有错误。
subprocess.Popen
构造函数返回Popen
个对象。也许你想使用Popen.communicate
?它确实返回一个元组stdoutdata, stderrdata
。
答案 1 :(得分:1)
Popen()
不是可迭代的,而是Popen
实例。
当您说a,b = thing
时,您认为thing
是一个元组(或其他可迭代的),可以映射到(a, b)
答案 2 :(得分:1)
代码
msg, err = X
将迭代而不是X
,并将其第一个元素分配给msg
,将其第二个元素分配给err
(并检查X
是否完全正确2个元素)。
由于Popen
实例不是可迭代的,因此您的代码会抛出“'Popen'对象不可迭代”。