Python TypeError: no hay argumentos suficientes para la cadena de formato
string (3)
Necesita poner los argumentos de formato en una tupla (agregar paréntesis):
instr = "''%s'', ''%s'', ''%d'', ''%s'', ''%s'', ''%s'', ''%s''" % (softname, procversion, int(percent), exe, description, company, procurl)
Lo que tienes actualmente es equivalente a lo siguiente:
intstr = ("''%s'', ''%s'', ''%d'', ''%s'', ''%s'', ''%s'', ''%s''" % softname), procversion, int(percent), exe, description, company, procurl
Ejemplo:
>>> "%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''
Aquí está la salida. Estas son cadenas utf-8, creo ... algunas de ellas pueden ser NoneType pero fallan inmediatamente, antes de que así sea ...
instr = "''%s'', ''%s'', ''%d'', ''%s'', ''%s'', ''%s'', ''%s''" % softname, procversion, int(percent), exe, description, company, procurl
TypeError: no hay argumentos suficientes para la cadena de formato
Es 7 por 7 sin embargo?
Obtuve el mismo error al usar% como un carácter de porcentaje en mi cadena de formato. La solución a esto es duplicar el %%.
Tenga en cuenta que la sintaxis %
para formatear cadenas se está quedando obsoleta. Si su versión de Python lo admite, debe escribir:
instr = "''{0}'', ''{1}'', ''{2}'', ''{3}'', ''{4}'', ''{5}'', ''{6}''".format(softname, procversion, int(percent), exe, description, company, procurl)
Esto también corrige el error que tenía.