我正在将现代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兼容代码是什么?
答案 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中的一个函数应该没问题。