2016-11-25 5 views
0

私は、Python 2.7.x のPython 3.3以降で動作し、UnicodeデータテキストファイルI/Oを使用するいくつかのコードに取り組んでいます。Python 2.7 io.open: "io import open"または "io.open()"を使用しますか?

だからこれは良いです - とはなぜですか?

バリアント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: 
    … 

コードがPython-ようでなければなりませんので、私は、バリアント2を使用するようにを傾向があるのです3 ish可能であれば、Python 2.7.x用バックポートスタブを提供するだけです。また、よりクリーンな外観と私は多くの既存のコードを変更する必要はありません。また、ioモジュール全体をインポートしないようにすることで、少ししか節約できないと思います。

+2

モジュール全体を常にインポートします。これが唯一の違いは、現在のモジュールのグローバルでどの名前がバインドされているかです( 'io'がバインドされているか、' open'がバインドされているかのどちらかです)。 –

+0

そのことを分かっていない、説明のために、Martijn! – Moonbase

+0

@MartijnPietersこれは他の質問の複製ではありません。それは特定の '開く'。 Variant 2を使用すると、Python 3が完全に採用されると、インポート行全体を削除することができます。 – Emil

答えて

0

は正式には良い方法はありません、それはあなた次第ですが、私はあなたがopen()と呼ばれる機能を持っている別のモジュールを使用する場合には、最後のインポートが上書きされますので、バリアント1を使用することが良いと思います前者。

Python 3では一般的にfrom module import fieldを使用するのが普通ですが、私は個人的には最初の変種を使用します。最終的に、より多くの情報を入力することを心配している場合は、良いエディターまたはIDEが役立ちます。 :-)

関連する問題