TypeError: 不能连接'str'和'list'对象是什么意思?
这个错误是什么意思呢?
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
3 个回答
2
在提问者的代码中还有另一个问题:
z = ('0.')
然后后面有 for k in z:
在第一个语句中的括号会被忽略,这样在第二个语句中,k
会先绑定到 '0'
,然后再绑定到 '.'
... 看起来应该是 z = ('0.', )
这个写法。
4
字符串对象只能和其他字符串连接在一起。Python是一种强类型语言,它不会自动帮你转换数据类型。
你可以这样做:
'a' + '1'
但是不能这样做:
'a' + 1
在你的情况下,你试图把一个字符串和一个列表连接在一起,这样是行不通的。不过,如果你想要的结果是把某个项目加到列表里,你可以这样做:
my_list.append('a')
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 中,方括号里的内容总是一个 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",)