解密字符串时出错

时间:2013-08-06 19:57:41

标签: python

有关行phCmd = "ph %s return all".split(' ') % (qgroup)错误的任何输入?我正在尝试破译字符串%s

from subprocess import Popen, PIPE, STDOUT

def main ():
    qgroups = ['tech.sw.list','tech.sw.amss']
    for qgroup in qgroups:
        print qgroup
        phCmd = "ph %s return all".split(' ') % (qgroup)
        phPipe = Popen(phCmd, stdout=PIPE, stderr=PIPE)
        (output, error) = phPipe.communicate()
        print output
        if phPipe.returncode != 0:
            print output
            raise IOError, "phcommand %s failed" % (phCmd)
        return output

ERROR:

Traceback (most recent call last):
  File "test.py", line 20, in <module>
    main()
  File "test.py", line 9, in main
    phCmd = "ph %s return all".split(' ') % (qgroup)
if __name__ == '__main__':
    main()

3 个答案:

答案 0 :(得分:3)

字符串的.split(' ')方法调用返回一个列表。尝试像

这样的东西
phCmd = ("ph %s return all" % (qgroup)).split(' ')

代替。

答案 1 :(得分:2)

"ph %s return all".split(' ') % (qgroup)

split()调用返回一个列表,并且%未定义参数类型列表和元组。我不确定你在这里做什么,但看起来你想要:

("ph %s return all" % (qgroup)).split(' ') 

答案 2 :(得分:2)

对字符串使用“%”时,必须将其放在字符串后面。这行代码

phCmd = "ph %s return all".split(' ') % (qgroup)

实际上是告诉Python获取"ph %s return all".split(' ')返回的列表并运行类似于:

的操作
>>> 2 % 2
0
>>>

使用(qgroup),它会爆炸。 要解决您的问题,请执行以下操作:

phCmd = ("ph %s return all" % qgroup).split(' ')