我正在将HJB软件包从Python2移植到3。

它使用print的output-stream选项-将其移植到Python3的最合适方法是什么?

def write_message(message, to=sys.__stdout__):
    def handle_message():
        print >> to, "*" * 60
        print >> to, message
        print >> to, "*" * 60
    return handle_message


像这样:

def write_message(message, to=sys.__stdout__):
    def handle_message():
        star_line = "*" * 60
        if ( sys.version_info < ( 3, 0 ) ):
            print >> to, star_line
            print >> to, message
            print >> to, star_line
        else:
            print( star_line, file=to )
            print( message,   file=to )
            print( star_line, file=to )
        return handle_message


这么简单吗?
我从事python编程的时间已经超过了我想念的时间,但是之前从未遇到过这个“操作员”。

编辑:最终版本

from __future__ import print_function

...

def write_message(message, to=sys.__stdout__):
    def handle_message():
        star_line = "*" * 60
        print( star_line, file=to )
        print( message,   file=to )
        print( star_line, file=to )
    return handle_message

最佳答案

我几乎肯定代码不会在Python 3中运行-它会产生语法错误。

相反,如果您的库支持的Python的最低版本为> = 2.6,则将from __future__ import print_function添加到文件顶部,然后仅使用您已经在使用的Python3 file=参数。

关于python - Python打印“>>”流修饰符-移植到python3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60085312/

10-11 06:20