什么:TypeError:无法连接'str'和'list'对象意味着什么?

8 python string

这个错误是什么意思?

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
Run Code Online (Sandbox Code Playgroud)

Tri*_*ych 11

我不确定你是否知道这cmd是一个单元素list,而不是一个字符串.

将该行更改为下面将构造一个字符串,其余代码将起作用:

# Just removing the square brackets
cmd = exepath + '-j' + str(j) + '-n' + str(z)
Run Code Online (Sandbox Code Playgroud)

我假设你使用括号来分组操作.如果一切都在一条线上,那就没有必要了.如果你想将它分成两行,你应该使用括号,而不是括号:

# 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))
Run Code Online (Sandbox Code Playgroud)

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",)
Run Code Online (Sandbox Code Playgroud)