这个错误是什么意思?
TypeError:无法连接'str'和'list'对象
以下是代码的一部分:
for j in ('90.','52.62263.','26.5651.','10.8123.'):
if j == '90.':
z = ('0.')
elif j == '52.62263.':
z = ('0.', '72.', '144.', '216.', '288.')
for k in z:
exepath = os.path.join(exe file location here)
exepath = '"' + os.path.normpath(exepath) + '"'
cmd = [exepath + '-j' + str(j) + '-n' + str(z)]
process=Popen('echo ' + cmd, shell=True, stderr=STDOUT )
print process
答案 0 :(得分:11)
我不确定您是否知道cmd
是一个元素list
,而不是字符串。
将该行更改为以下将构造一个字符串,其余代码将起作用:
# Just removing the square brackets
cmd = exepath + '-j' + str(j) + '-n' + str(z)
我假设您只使用括号对操作进行分组。如果一切都在一条线上,那就没有必要了。如果你想把它分成两行,你应该使用括号,而不是括号:
# This returns a one-element list
cmd = [exepath + '-j' + str(j) +
'-n' + str(z)]
# This returns a string
cmd = (exepath + '-j' + str(j) +
'-n' + str(z))
python中方括号之间的任何内容总是 a list
。括号之间的表达式被评估为正常,除非表达式中有逗号,在这种情况下括号充当tuple
构造函数:
# This is a string
str = ("I'm a string")
# This is a tuple
tup = ("I'm a string","me too")
# This is also a (one-element) tuple
tup = ("I'm a string",)
答案 1 :(得分:4)
字符串对象只能与其他字符串连接。 Python是一种强类型语言。它不会为你强制类型。
你可以这样做:
'a' + '1'
但不是:
'a' + 1
在您的情况下,您正在尝试连接字符串和列表。这不行。您可以将项目附加到列表中,如果这是您想要的结果:
my_list.append('a')
答案 2 :(得分:2)
OP代码中还有另一个问题:
z = ('0.')
然后for k in z:
第一个语句中的括号将被忽略,导致第二个语句首先绑定k
到'0'
然后'.'
...看起来像z = ('0.', )