Currently, when I
from __future__ import print_function
from Python 2.7.6, I apparently get a version of print() prior to the addition of the flush
keyword argument, which went in Python 3.3 according to the docs. The Python3 installed in my system (Ubuntu) is Python 3.4, and I verified its print() function has the flush
argument.
How do I import the print()
function from 3.4?
From where is __future__
getting the older print function?
You cannot get the version from 3.4 imported into Python 2.7, no. Just flush sys.stdout
manually after printing:
import sys
print(...)
sys.stdout.flush()
Or you can create a wrapper function around print()
if you have to have something that accepts the keyword argument:
from __future__ import print_function
import sys
try:
# Python 3
import builtins
except ImportError:
# Python 2
import __builtin__ as builtins
def print(*args, **kwargs):
sep, end = kwargs.pop('sep', ' '), kwargs.pop('end', '\n')
file, flush = kwargs.pop('file', sys.stdout), kwargs.pop('flush', False)
if kwargs:
raise TypeError('print() got an unexpected keyword argument {!r}'.format(next(iter(kwargs))))
builtins.print(*args, sep=sep, end=end, file=file)
if flush:
file.flush()
This creates a replacement version that'll work just the same as the version in 3.3 and up.
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