Что делает "print >>" в python?
Мне нужно перевести код из python 2 в python 3, и я не могу понять, что делает print >>
и как его записать в python 3.
print >> sys.stderr, '--'
print >> sys.stderr, 'entrada1: ', entrada1
print >> sys.stderr, 'entrada2: ', entrada2
print >> sys.stderr, '--'
Ответы
Ответ 1
Часть >> sys.stderr
выводит вывод print
на stderr вместо stdout в Python 2.
Чтобы процитировать документацию:
print
также имеет расширенную форму, определенную второй частью синтаксис, описанный выше. Эта форма иногда называется "печать шеврон". В этом виде первое выражение после >>
должно оценивать объект "file-like", в частности объект, который имеет write()
, как описано выше. В этой расширенной форме последующие выражения печатаются в этот объект. Если первый выражение оценивается как None
, тогда sys.stdout
используется как файл для вывод.
В Python 3 используйте аргумент file
для функции print()
:
print("spam", file=sys.stderr)
Ответ 2
Чтобы преобразовать их из Python 2 в Python 3, измените:
print >>sys.stderr, 'Hello'
в
print('Hello', file=sys.stderr)
Ответ 3
Для печати на stderr
note
sys.stderr.write()
переносится по версиям, но вам нужно добавить новую строку, в отличие от print
; например
import sys
errlog = sys.stderr.write
errlog("an error message\n")