我正在研究一些应该在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模块来节省一点。
答案 0 :(得分:1)
正式没有更好的方法,这取决于你,但我认为使用变体1 是好的,因为如果你将使用另一个具有名为{{1}的函数的模块},最后一次导入将覆盖前者。
你是对的,通常在Python 3中使用open()
是很常见的,但我个人会使用第一个变体。最后,如果您担心输入更多内容,一个好的编辑器或IDE会帮助您。 : - )