Skip to content Skip to sidebar Skip to footer

Need Python 3.4 Version Of Print() From __future__

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

Solution 1:

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 3import builtins
except ImportError:
    # Python 2import __builtin__ as builtins


defprint(*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.

Post a Comment for "Need Python 3.4 Version Of Print() From __future__"