Python TypeError: no hay suficientes argumentos para la cadena de formato

Aquí está la salida. Estas son cadenas de caracteres utf-8, creo … algunas de estas pueden ser NoneType pero fallan inmediatamente, antes de eso …

instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname, procversion, int(percent), exe, description, company, procurl 

TypeError: no hay suficientes argumentos para la cadena de formato

Sus 7 por 7 aunque?

Tenga en cuenta que la syntax % para el formato de 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 sucedió.

Debe colocar 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 "", line 1, in  TypeError: not enough arguments for format string >>> "%s %s" % ('hello', 'world') 'hello world' 

Recibí el mismo error al usar% como un carácter de porcentaje en mi cadena de formato. La solución a esto es duplicar el %%.