Vous pouvez imiter l'idiome C en Python.
Pour lire un tampon jusqu'à max_size
nombre d'octets, vous pouvez le faire :
with open(filename, 'rb') as f:
while True:
buf = f.read(max_size)
if not buf:
break
process(buf)
Ou encore, un fichier texte ligne par ligne :
# warning -- not idiomatic Python! See below...
with open(filename, 'rb') as f:
while True:
line = f.readline()
if not line:
break
process(line)
Vous devez utiliser while True / break
construire puisqu'il y a pas de test eof en Python autre que le manque d'octets retournés par une lecture.
En C, vous pourriez avoir :
while ((ch != '\n') && (ch != EOF)) {
// read the next ch and add to a buffer
// ..
}
Cependant, vous ne pouvez pas avoir cela en Python :
while (line = f.readline()):
# syntax error
parce que les affectations ne sont pas autorisées dans les expressions en Python (bien que les versions récentes de Python puissent imiter cela en utilisant des expressions d'affectation, voir ci-dessous).
C'est certainement plus idiomatique en Python pour faire cela :
# THIS IS IDIOMATIC Python. Do this:
with open('somefile') as f:
for line in f:
process(line)
Mise à jour : Depuis Python 3.8, vous pouvez également utiliser expressions d'affectation :
while line := f.readline():
process(line)
Cela fonctionne même si la ligne lue est vide et continue jusqu'à EOF.