2015-04-06 68 views
1

刚刚接触到python。对不起,如果下面的问题是非常基本的。Python Subprocess.Popen属性错误?

我在下面的情况下得到属性错误。亲切的建议,希望我错过了。 正在使用python 2.4。

count = subprocess.Popen(["awk -F'n=' '{x+=$2}END{print x}' output"],stdout=subprocess.PIPE.communicate()[0],shell=True) 

AttributeError的: 'INT' 对象没有属性 '通信'

感谢, 拉杰什

+0

请发布整个程序,越短越好。 http://sscce.org/ – pts

+0

请发布整个错误消息,包括回溯。回溯中的行号应与您发布的程序中的行相对应。 – pts

回答

0

替换

stdout=subprocess.PIPE.communicate()[0] 

stdout=subprocess.PIPE 

我想这是你想要输入的内容:

count = int(subprocess.Popen(["awk -F'n=' '{x+=$2}END{print x}' output"], stdout=subprocess.PIPE, shell=True).communicate()[0]) 

请注意,shell=True是不安全的大部分时间,而这也是不必要的慢。有一种简单的方法可以避免它在你的情况下:

count = int(subprocess.Popen(('awk', '-Fn=', '{x+=$2}END{print x}', 'output'), stdout=subprocess.PIPE).communicate()[0])