如何向Python 2反向移植Python 3(encoding =“utf-8”)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (192)

我有一个为Python 3构建的Python代码库,它使用Python 3风格的open()和编码参数:

https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47

    with open(fname, "rt", encoding="utf-8") as f:

现在我想将这段代码恢复到Python 2.x,这样我就有了一个可以与Python 2和Python 3一起工作的代码库。

解决open()差异和缺乏编码参数的建议策略是什么?

我可以使用Python 3 open()样式的文件处理程序来传输字节串,所以它会像Python 2一样open()吗?

提问于
用户回答回答于

1.要在Python 2中获得编码参数:

如果你只需要支持Python 2.6和2.7,你可以使用io.open而不是openio是Python 3的新io子系统,它也存在于Python 2,6和2.7中。请注意,在Python 2.6(以及3.0)中,它纯粹用python实现,速度很慢,所以如果你需要读取文件的速度,这不是一个好的选择。

如果你需要速度,或者你需要支持Python 2.5或更早的版本,你可以使用codecs.open。它也有一个编码参数,和它非常相似,io.open除了它以不同的方式处理行尾。

2.获取open()流式传输字节的Python 3 样式文件处理程序:

open(filename, 'rb')

注意'b',意思是'字节'。

用户回答回答于

扫码关注云+社区

领取腾讯云代金券