Anda bisa meniru idiom C dengan Python.
Untuk membaca buffer hingga max_size
sejumlah byte, Anda dapat melakukan ini:
with open(filename, 'rb') as f:
while True:
buf = f.read(max_size)
if not buf:
break
process(buf)
Atau, file teks baris demi baris:
# warning -- not idiomatic Python! See below...
with open(filename, 'rb') as f:
while True:
line = f.readline()
if not line:
break
process(line)
Anda perlu menggunakan while True / break
konstruksi karena tidak ada pengujian eof dengan Python selain kurangnya byte yang dikembalikan dari pembacaan.
Di C, Anda mungkin memiliki:
while ((ch != '\n') && (ch != EOF)) {
// read the next ch and add to a buffer
// ..
}
Namun, Anda tidak dapat menggunakan ini dengan Python:
while (line = f.readline()):
# syntax error
karena tugas tidak diperbolehkan dalam ekspresi dengan Python (meskipun versi terbaru Python dapat meniru ini menggunakan ekspresi tugas, lihat di bawah).
Jelas lebih idiomatis dalam Python untuk melakukan ini:
# THIS IS IDIOMATIC Python. Do this:
with open('somefile') as f:
for line in f:
process(line)
Pembaruan: Sejak Python 3.8 Anda juga dapat menggunakan ekspresi tugas :
while line := f.readline():
process(line)
line
akan memiliki karakter baris baru di akhir.