在工作中,我在我的桌面上运行Arch(默认情况下是python 3),在我公司的服务器上运行Debian Lenny(这是python 2.5)。我想编写一个可以在python 2和3中运行的单个python脚本。这是一个非常简单的脚本,对它来说并不多(主要是使用subprocess
调用git)。对于该死的print
语句,一切都已经在两个版本的python EXCEPT中都有效。
那里的每个人似乎都在暗示from __future__ import print_function
伎俩。然而,这是在python 2.6中引入的,我坚持使用2.5。
那么我的选择是什么?如何使用相同的脚本在2.5和3中调用print
?我想的可能是某种包装函数,但这可能不是最“pythonic”的做事方式。你的意见?不,将服务器升级到2.6不是一种选择。
谢谢!
答案 0 :(得分:5)
print("hi")
适用于py 2和3,而py 2.5中没有from __future__
或者,虽然不推荐:
import sys
sys.stdout.write("hi")
答案 1 :(得分:4)
为什么不直接使用logging框架?它可以缓解您的问题,并且比整个代码中散布的打印语句要好得多。
答案 2 :(得分:0)
这对我有用:
import sys
if sys.version_info[0] == 2:
def print_(*args):
w = sys.stdout.write
w( ', '.join(str(a) for a in args) )
w( '\n' )
else:
print_ = getattr(__builtins__, 'print')
如果您需要全功能打印功能,最好使用six中的print_。在这种情况下,
from six import print_
// replace all "print ..." by "print_(...)"