有关行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()
答案 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(' ')