What does "print >>" do in python?
Solution 1
The >> sys.stderr
part makes the print
statement output to stderr instead of stdout in Python 2.
To quote the documentation:
>>
must evaluate to a “file-like” object, specifically an object that has awrite()
method as described above. With this extended form, the subsequent expressions are printed to this file object. If the first expression evaluates toNone
, thensys.stdout
is used as the file for output.
In Python 3 use the file
argument to the print()
function:
print("spam", file=sys.stderr)
Solution 2
To convert these from Python 2 to Python 3, change:
print >>sys.stderr, 'Hello'
to:
print('Hello', file=sys.stderr)
Solution 3
For printing to stderr
note
sys.stderr.write()
is portable across versions, yet you need to add a newline, unlike print
; for instance
import sys
errlog = sys.stderr.write
errlog("an error message\n")
Sebastian
Updated on July 09, 2022Comments
-
Sebastian almost 2 years
I have to translate a code from python 2 into python 3 and I can't understand what does
print >>
do and how should I write it in python 3.print >> sys.stderr, '--' print >> sys.stderr, 'entrada1: ', entrada1 print >> sys.stderr, 'entrada2: ', entrada2 print >> sys.stderr, '--'
-
Eugene Yarmash over 8 yearsAlso note that
.write()
expects its argument to be a string. To write something other than a string, it needs to be converted to a string first:sys.stderr.write(str(['the answer', 42]))