将print()重定向到python 2.4

时间:2016-08-24 20:00:12

标签: python

我正在将现代python脚本向后移植到2.4,以使其与RHEL 5.X的库存兼容。虽然大部分工作都是相当直接的,但我无法弄清楚如何处理我追加文件的情​​况:

print("Foo",file=file("/tmp/bar",'ab'))

这是我移植的代码中非常常见的构造。我正在使用来自 future 的打印功能,它工作正常,但在这里它在“file = file(”filename“,”ab')“部分扼杀。显然,2.4中不支持这种重定向。同样,我还没有找到一种方法让打印功能支持>>来自旧印刷品的操作员。在没有打印功能的情况下重写这个脚本将是一项艰巨的任务,所以我想要一个基于打印功能的解决方案。

我发现很多文档都展示了如何使用>>在旧打印中,或者在新打印功能中使用file = file(),但实际上在2.4中没有任何作用。

与此相同的Python 2.4兼容代码是什么?

1 个答案:

答案 0 :(得分:4)

语法非常糟糕:

print >> file('/tmp/bar', 'ab'), 'Foo'

虽然你当然应该写:

f = open('/tmp/bar', 'ab')
try:
    print >> f, 'Foo'
finally:
    f.close()

确保输出实际上已关闭并刷新。 (Python 2.4没有with语句!)。

作为将所有内容转换为print语句的替代方法,您还可以尝试print_中的Six: Python 2 and 3 Compatibility Library函数。我不确定整个库是否支持2.4,但2.4中的一个函数应该没问题。