Я получаю эту ошибку, когда запускаю свой скрипт python:
TypeError: cannot concatenate 'str' and 'NoneType' objects
Я почти уверен, что «str» означает строку, но я не знаю, что такое объект «NoneType». Мой скрипт не справляется со второй строкой, я знаю, что первая работает, потому что команды из этой строки находятся в моем asa, как я и ожидал. Сначала я подумал, что это может быть потому, что я использую переменные и пользовательский ввод внутри send_command.
Все в CAPS - это переменные, все в нижнем регистре вводится из параметров parser.add_option.
Я использую pexpect и optparse
send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)
send_command(child, SNMPSRVUSRCMD + snmpuser + group + V3AUTHCMD + snmphmac + snmpauth + PRIVCMD + snmpencrypt + snmppriv)
NoneType
- это тип одноэлементного значенияNone
. Одно из ваших значений не является строкой.str()
str (SNMPSRVUSRCMD) + str (snmpuser) + ...Ответы:
NoneType
- это типNone
объекта, который не указывает значения .None
- это возвращаемое значение функций, которые «ничего не возвращают». Это также обычное возвращаемое значение по умолчанию для функций, которые что-то ищут и могут это найти, а могут и не найти; например, он возвращается,re.search
когда регулярное выражение не совпадает илиdict.get
когда ключ не имеет записи в dict. Вы не можете добавлятьNone
строки или другие объекты.Одна из ваших переменных - это
None
не строка. Возможно, вы забыли сделать этоreturn
в одной из своих функций, или, может быть, пользователь не предоставил параметр командной строки иoptparse
дал вам значениеNone
этого параметра. Когда вы пытаетесь добавитьNone
к строке, вы получаете исключение:Одно из
group
илиSNMPGROUPCMD
илиV3PRIVCMD
имеетNone
своим значением.источник
NameError
. Его также можно было установить, но равнымNone
(«установить в ничто» = «не задано»?), Тогда вы могли бы получить ихTypeError
.NoneType
это просто типNone
синглтона:>>> type(None) <type 'NoneType'>
Из последней ссылки выше:
В вашем случае похоже, что один из элементов, которые вы пытаетесь объединить, есть
None
, следовательно, ваша ошибка.источник
В целях защитного программирования перед использованием объекты должны быть проверены на недействительность.
if obj is None:
или
if obj is not None:
источник
Это означает, что вы пытаетесь связать строку с чем-то, что есть
None
.None не является нулевым значением Python, а
NoneType
является его типом.Этот код вызовет такую же ошибку:
>>> bar = "something" >>> foo = None >>> print foo + bar TypeError: cannot concatenate 'str' and 'NoneType' objects
источник
В Python для обозначения отсутствия значения можно использовать
None
значениеtypes.NoneType.None
источник
В сообщении об ошибке, вместо того, чтобы сообщить вам, что вы не можете объединить два объекта, показывая их значения (строку и
None
в этом примере), интерпретатор Python сообщает вам об этом, показывая типы объектов, которые вы пытались объединить. Тип каждой строки - этоstr
пока вызывается тип единственногоNone
экземпляраNoneType
.Обычно вам не нужно беспокоиться об этом
NoneType
, но в этом примере это необходимо знатьtype(None) == NoneType
.источник
>>> type(key) <type 'NoneType'> >>> type(key) == NoneType Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'NoneType' is not defined
NoneType
нигде не определен ( насколько мне известно). Если вы хотите проверить, есть ли значениеNone
, просто используйтеkey is None
(см. Stackoverflow.com/questions/23086383/… ). В противном случае вы могли бы использоватьtype(key) == type(None)
тот же эффект.Ваша ошибка возникает примерно из-за этого: >>>
>>> None + "hello world"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Объект Python None примерно эквивалентен null , nil и т. Д. На других языках.
источник
Одна из переменных не имеет значения, поэтому это NoneType. Вам придется разобраться, почему это так, вероятно, это простая логическая ошибка с вашей стороны.
источник
Нетип - это тип Нет.
См. Документы здесь: https://docs.python.org/2/library/types.html#types.NoneType
источник