Python TypeError: недостаточно аргументов для строки формата
Здесь вывод. Я думаю, что это строки utf-8... некоторые из них могут быть NoneType, но они не срабатывают немедленно, перед тем, как это...
instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname, procversion, int(percent), exe, description, company, procurl
TypeError: недостаточно аргументов для строки формата
Его 7 для 7, хотя?
Ответы
Ответ 1
Обратите внимание, что синтаксис %
для форматирования строк устаревает. Если ваша версия Python поддерживает ее, вы должны написать:
instr = "'{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}'".format(softname, procversion, int(percent), exe, description, company, procurl)
Это также исправляет ошибку, с которой вы столкнулись.
Ответ 2
Вам нужно поместить аргументы формата в кортеж (добавить круглые скобки):
instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % (softname, procversion, int(percent), exe, description, company, procurl)
То, что у вас есть, эквивалентно следующему:
intstr = ("'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname), procversion, int(percent), exe, description, company, procurl
Пример:
>>> "%s %s" % 'hello', 'world'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string
>>> "%s %s" % ('hello', 'world')
'hello world'
Ответ 3
Я получил ту же ошибку при использовании %
в качестве символа процента в моей строке формата. Решением этой проблемы является удвоение %%
.