Python ファイルを読み込む - Why it doesn't work?
Python ファイルを'rU' (universal newlines)モードで読み込む - Why it doesn't work?
久しぶりのPython。紆余曲折あってバイナリモードでのファイルを読み込みを試みてる。
組み込み関数 — Python 3.7.5 ドキュメント
仕様書にも記載されている通り、ファイルオープン時に'b'を付加すれば良い。
with open(filename, 'rb') as f: b = f.read(1)
ファイルの終端(EOF)の判定手段は、仕様書に記載されている通り、
An empty string is returned when EOF is encountered immediately.
と言うことなので、
with open(filename, 'rb') as f: while True: b = f.read(1) if not b: # or if b == '': break #Do something with b
C言語の"stdio.h"のように、どこかにEOFが定義されているのかと考えてしまい無駄な時間をかけてしまった。
なお、ソースコードはPython binary EOF - Stack Overflowから。