Oto wynik. Są to ciągi utf-8, jak sądzę ... niektóre z nich mogą być typu NoneType, ale natychmiast zawodzą, przed takimi jak to ...
instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname, procversion, int(percent), exe, description, company, procurl
TypeError: za mało argumentów dla ciągu formatu
Jednak jego 7 za 7?
Musisz umieścić argumenty formatu w krotce (dodaj nawiasy):
instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % (softname, procversion, int(percent), exe, description, company, procurl)
To, co obecnie masz, jest równoważne z:
intstr = ("'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname), procversion, int(percent), exe, description, company, procurl
Przykład:
>>> "%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'
źródło
Ten sam błąd wystąpił podczas używania
%
znaku procentu w ciągu formatu. Rozwiązaniem tego problemu jest podwojenie%%
.źródło
"foo: %(foo)s, bar: s(bar)% baz: %(baz)s" % {"foo": "FOO", "bar": "BAR", "baz": "BAZ"}