Подтвердить что ты не робот

Что делает "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, '--'
4b9b3361

Ответ 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")