1. ホーム
  2. python

[解決済み] ファイルが `eof` にあるかどうかを調べるには?

2023-06-16 12:35:54

質問

fp = open("a.txt")
#do many things with fp

c = fp.read()
if c is None:
    print 'fp is at the eof'

上記の方法以外に、fpがすでにeofにあるかどうかを調べる方法はありますか?

どのように解決するのですか?

fp.read() はファイルの終わりまで読み込むので、正常に終了した後はファイルがEOFにあることが分かっており、確認する必要はありません。EOF に到達できない場合は、例外が発生します。

でなく、チャンクでファイルを読む場合は read() でなく、チャンクでファイルを読む場合、EOF を打ったことがわかるのは read が要求したバイト数より少ない値を返したとき、EOFにぶつかったことがわかる。その場合、次の read の呼び出しは空の文字列を返します( None ). 次のループは、ファイルをチャンクで読みます。 read を多くても一度だけ呼び出します。

assert n > 0
while True:
    chunk = fp.read(n)
    if chunk == '':
        break
    process(chunk)

あるいは、もっと短く。

for chunk in iter(lambda: fp.read(n), ''):
    process(chunk)