in

file – ¿Cuál es la contraparte perfecta en Python para «mientras no EOF»

apple touch icon@2

Puedes imitar el idioma de C en Python.

Para leer un búfer hasta max_size número de bytes, puede hacer esto:

with open(filename, 'rb') as f:
    while True:
        buf = f.read(max_size)
        if not buf:
            break
        process(buf)

O, un archivo de texto línea por línea:

# warning -- not idiomatic Python! See below...
with open(filename, 'rb') as f:
    while True:
        line = f.readline()
        if not line:
            break
        process(line)

Necesitas usar while True / break construir ya que hay sin prueba eof en Python que no sea la falta de bytes devueltos por una lectura.

En C, es posible que tenga:

while ((ch != 'n') && (ch != EOF)) {
   // read the next ch and add to a buffer
   // ..
}

Sin embargo, no puede tener esto en Python:

 while (line = f.readline()):
     # syntax error

porque no se permiten asignaciones en expresiones en Python (aunque las versiones recientes de Python pueden imitar esto usando expresiones de asignación, ver más abajo).

Es seguramente más idiomático en Python para hacer esto:

# THIS IS IDIOMATIC Python. Do this:
with open('somefile') as f:
    for line in f:
        process(line)

Actualizar: Desde Python 3.8 también puede usar expresiones de asignación:

 while line := f.readline():
     process(line)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

60 32161 1512638316

¿Qué es un método final en Java?

rxcnqmp6kXTyFBq6RQDoFZ 1200 80

Notas del parche Cyberpunk 2077: menos cejas, carreteras más húmedas y más cambios