質問

違いは何ですか 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() を使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top