Что означает: 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 Solutions collect form web for “Что означает: TypeError: не может конкатенировать объекты 'str' и 'list'?”

Я не уверен, что вы знаете, что 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",) 

Строковые объекты могут быть объединены только с другими строками. Python – это строго типизированный язык. Он не будет принуждать вас к типу.

ты можешь сделать:

 'a' + '1' 

но нет:

 'a' + 1 

в вашем случае вы пытаетесь выполнить строку и список. это не сработает. вы можете добавить элемент в список, хотя, если это ваш желаемый результат:

 my_list.append('a') 

В коде OP есть еще одна проблема:

z = ('0.') а затем for k in z:

Скобки в первом утверждении будут проигнорированы, что приведет к тому, что второй оператор привяжет k сначала к '0' а затем '.' … выглядит как z = ('0.', ) .

  • Почему числа в строке становятся «x0n», когда перед ними обратная косая черта?
  • Почему Python возвращает True при проверке, является ли пустая строка другой?
  • Манипуляция строками нотных обозначений
  • NameError: name 'book' не определен
  • Изменение предпочтительной кодировки для командной строки Windows7
  • Python и разрывы строк
  • Проверьте, что строка в точной форме «<int1>, <int2>» в Python
  • Python: Как написать несколько строк в одной строке?
  • Python - лучший язык программирования в мире.