2015-08-03 4 views
3

Можно ли передать несколько аргументов sys.stdout.write? Все примеры, которые я видел, используют один параметр.передать несколько аргументов sys.stdout.write

Следующие утверждения неверны.

sys.stdout.write("\r%d of %d" % read num_lines) 
Syntax Error: sys.stdout.write 

sys.stdout.write("\r%d of %d" % read, num_lines) 
not enough arguments for format string 

sys.stdout.write("\r%d of %d" % read, %num_lines) 
Syntax Error: sys.stdout.write 

sys.stdout.write("\r%d of %d" % read, num_lines) 
not enough arguments for format string 

Что мне делать?

ответ

5

Вы должны поместить переменные в кортеж:

>>> read=1 
>>> num_lines=5 
>>> sys.stdout.write("\r%d of %d" % (read,num_lines)) 
1 of 5>>> 

Или использовать str.format() метод:

>>> sys.stdout.write("\r{} of {}".format(read,num_lines)) 
1 of 5 

Если ваши аргументы в итератор вы можете использовать распаковку операцию передать их струны format() атрибут.

In [18]: vars = [1, 2, 3] 
In [19]: sys.stdout.write("{}-{}-{}".format(*vars)) 
1-2-3 
Смежные вопросы