Python 2.7 io.open:使用"从io import open"或" io.open()"?

时间:2016-11-25 17:20:31

标签: python python-2.7 python-3.x python-module

我正在研究一些应该在Python 2.7.x Python 3.3+下运行的代码,并使用Unicode数据文本文件I / O.

哪个更好 - 以及为什么?

变式1:

import io
encoding = 'utf-8'

with io.open('Unicode.txt', 'w', encoding=encoding) as f:
    …
with io.open('Unicode.txt', 'r', encoding=encoding) as f:
    …

变体2:

from io import open
encoding = 'utf-8'

with open('Unicode.txt', 'w', encoding=encoding) as f:
    …
with open('Unicode.txt', 'r', encoding=encoding) as f:
    …

就个人而言,我倾向使用Variant 2,因为代码应尽可能为Python-3 ish ,只为Python 2.7提供backport存根。 X。它看起来也更干净,我不必更改现有的代码。另外我想也许我可以通过不导入整个io模块来节省一点。

1 个答案:

答案 0 :(得分:1)

正式没有更好的方法,这取决于你,但我认为使用变体1 是好的,因为如果你将使用另一个具有名为{{1}的函数的模块},最后一次导入将覆盖前者。

你是对的,通常在Python 3中使用open()是很常见的,但我个人会使用第一个变体。最后,如果您担心输入更多内容,一个好的编辑器或IDE会帮助您。 : - )