Pregunta En Python, ¿cómo leo un archivo línea por línea en una lista?


¿Cómo leo cada línea de un archivo en Python y almaceno cada línea como un elemento en una lista?

Quiero leer el archivo línea por línea y anexar cada línea al final de la lista.


1694
2017-07-18 22:25


origen


Respuestas:


with open(fname) as f:
    content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content] 

1649
2017-07-18 22:28



Ver Entrada y Ouput:

with open('filename') as f:
    lines = f.readlines()

o con pelar el carácter de nueva línea:

lines = [line.rstrip('\n') for line in open('filename')]

Nota del editor: el comando original de eliminación de espacio en blanco de esta respuesta, line.strip(), como implica el comentario de Janus Troelsen, eliminaría todo líder y final espacios en blanco, no solo el final \n.


779
2017-07-18 22:28



Esto es más explícito de lo necesario, pero hace lo que quiere.

with open("file.txt", "r") as ins:
    array = []
    for line in ins:
        array.append(line)

367
2017-07-18 22:27



Esto producirá una "matriz" de líneas del archivo.

lines = tuple(open(filename, 'r'))

206
2017-07-18 22:27



Si quieres el \n incluido:

with open(fname) as f:
    content = f.readlines()

Si tu no quieres \n incluido:

with open(fname) as f:
    content = f.read().splitlines()

150
2018-03-02 04:22



Simplemente puede hacer lo siguiente, como se ha sugerido:

with open('/your/path/file') as f:
    my_lines = f.readlines()

Tenga en cuenta que este enfoque tiene 2 desventajas:

1) Almacena todas las líneas en la memoria. En el caso general, esta es una muy mala idea. El archivo podría ser muy grande y podría quedarse sin memoria. Incluso si no es grande, es simplemente un desperdicio de memoria.

2) Esto no permite el procesamiento de cada línea a medida que las lee. Entonces, si procesa sus líneas después de esto, no es eficiente (requiere dos pasadas en lugar de una).

Un mejor enfoque para el caso general sería el siguiente:

with open('/your/path/file') as f:
    for line in f:
        process(line)

Donde define la función de proceso de la forma que desee. Por ejemplo:

def process(line):
    if 'save the world' in line.lower():
         superman.save_the_world()

(La implementación de la Superman la clase queda como un ejercicio para ti).

Esto funcionará muy bien para cualquier tamaño de archivo y revisará su archivo en solo 1 pase. Por lo general, esto es cómo funcionarán los analizadores genéricos.


91
2018-02-25 09:13



Si no le importa cerrar el archivo, este one-liner funciona:

lines = open('file.txt').read().split("\n")

los tradicional camino:

fp = open('file.txt') # Open file on read mode
lines = fp.read().split("\n") # Create a list containing all lines
fp.close() # Close file

Utilizando with (recomendado):

with open('file.txt') as fp:
    lines = fp.read().split("\n")

61
2018-04-20 05:53