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, '--'
They are bit shift operator which exists in many mainstream programming languages, << is the left shift and >> is the right shift, they can be demonstrated as the following table, assume an integer only take 1 byte in memory.
In Python >> is called right shift operator. It is a bitwise operator. It requires a bitwise representation of object as first operand. Bits are shifted to right by number of bits stipulated by second operand.
The Python += operator lets you add two values together and assign the resultant value to a variable. This operator is often referred to as the addition assignment operator. It is shorter than adding two numbers together and then assigning the resulting value using both a + and an = sign separately.
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)
To convert these from Python 2 to Python 3, change:
print >>sys.stderr, 'Hello'
to:
print('Hello', file=sys.stderr)
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")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With