質問
違いは何ですか file
そして open
Pythonで?いつどれを使用すればよいですか?(私が 2.5 だとします)
解決
常に使用する必要があります open()
.
として ドキュメンテーション 状態:
ファイルを開くときは、このコンストラクターを直接呼び出すのではなく、Open()を使用することが望ましいです。ファイルはタイプテストにより適しています(たとえば、「IsInstance(f、file)」の記述)。
また、 file()
削除されました Python 3.0以降。
他のヒント
2 つの理由:「それを行う方法は 1 つあるはずだ」という Python の哲学と file
去っていきます。
file
は実際のタイプです(例: file('myfile.txt')
コンストラクターを呼び出しています)。 open
ファイルオブジェクトを返すファクトリ関数です。
Python 3.0では file
組み込みから、複数のクラスによって実装されるように移行します。 io
ライブラリ (バッファ付きリーダーなどを備えた Java に似ています)
file()
int や list などの型です。 open()
ファイルを開くための関数であり、 file
物体。
これは、open を使用する必要がある場合の例です。
f = open(filename, 'r')
for line in f:
process(line)
f.close()
これは、ファイルを使用する必要がある場合の例です。
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
ご覧のとおり、両方が存在するのには十分な理由があり、両方の明確な使用例があります。
機能的には、この 2 つは同じです。 open
電話します file
いずれにしても、現在のところ、違いはスタイルの問題です。の Python ドキュメント 使用をお勧めします open
.
ファイルを開くときは、ファイル コンストラクターを直接呼び出すのではなく、open() を使用することをお勧めします。
その理由は、将来のバージョンでも同じであることが保証されないためです (open
これはファクトリ関数となり、開いているパスに応じて異なるタイプのオブジェクトを返します)。
ファイルを開く場合には、open() のみを使用してください。file() は実際には 3.0 で削除されており、現時点では非推奨です。彼らは一種の奇妙な関係を築いてきましたが、file() はもう終了するので、もう心配する必要はありません。
以下は Python 2.6 ドキュメントからの抜粋です。[ブラケットの内容] 私が追加しました。
ファイルを開くときは、この [file()] コンストラクターを直接呼び出すのではなく、open() を使用することをお勧めします。file は型テストに適しています (たとえば、 isinstance(f, file) と記述します)。
Van Rossum 氏によると、open() は現在 file() のエイリアスですが、将来変更される可能性があるため、open() を使用する必要があります。