2016-08-25 9 views
0

Мой код в основном выглядит так, вынув только соответствующие части для этого:Получение ненужную при печати на стандартный вывод ошибок в Python 3

import sys 
print("error", "", "\n", sys.stderr, False) 

Выход:

error 
    <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> False 

Почему я Я получаю эту вторую строку и как мне избавиться от нее?

ответ

1

Вы получаете вторую строчку, потому что print prints the list of things you give it in sequence. Итак, вы печатаете error, затем ничего, затем новую строку, затем sys.stderr - у которой есть собственное строковое представление, которое равно <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>, а затем False.

От РЕПЛ:

>>> import sys 
>>> print("a", "b", "c") 
a b c 
>>> print(sys.stderr) 
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> 

Учитывая, что, вы должны уточнить, что вы ожидали выход, предназначенный. Предположительно вы пытаетесь печатать stderr, в этом случае вы должны использовать «именованные параметры»:

>>> print("a", "b", "c", sep=' +++ ', end='\n', file=sys.stderr, flush=False) 
a +++ b +++ c 

Обратите внимание, что поскольку подпись для print включает в себя, как это первый параметр *objects, он будет считать, все руки к нему что-то печатает. Вы должны назвать параметры sep, end, file и flush, если вы хотите их установить.