Advertisement
  1. Code
  2. Python

Consejo rápido: cómo leer archivos de texto extremadamente grandes utilizando Python

Scroll to top
Read Time: 3 min

Spanish (Español) translation by Carlos (you can also view the original English article)

Permíteme empezar preguntando directamente , ¿realmente necesitamos Python para leer archivos de texto grandes? ¿No sería suficiente con nuestro procesador de textos o nuestro editor de texto normal? Cuando digo grandes, ¡me refiero a archivos extremadamente grandes!

Bueno, veamos algunas pruebas sobre si necesitaríamos Python para leer tales archivos o no.

Obteniendo el archivo

Para llevar a cabo nuestro experimento, necesitamos un archivo de texto extremadamente grande. En este tutorial, obtendremos este archivo de la página web de descargas de UCSC Genome Bioinformatics. El archivo que utilizaremos en particular es el archivo hg38.fa.gz, que como se describe aquí, es:

Una secuencia de ensamblaje de «enmascarado suave» en un archivo. Las repeticiones de RepeatMasker y de Tandem Repeats Finder (con un período de 12 o menos) se muestran en minúsculas; la secuencia no repetitiva se muestra en mayúsculas.

No te preocupes si no entendiste la declaración anterior, pues es una terminología relacionada a la genética. Lo que importa en este tutorial es el concepto de leer archivos de texto extremadamente grandes utilizando Python.

Continúa y descarga hg38.fa.gz (por favor ten cuidado, el archivo es de 938 MB). Puedes usar 7-zip para descomprimir el archivo, o cualquier otra herramienta que prefieras.

Después de descomprimir el archivo, obtendrás un archivo llamado hg38.fa. Cambia su nombre a hg38.txt para obtener un archivo de texto.

Abriendo el archivo de la forma tradicional

Lo que quiero decir aquí con la forma tradicional es utilizar nuestro procesador de texto o el editor de texto para abrir el archivo. Veamos qué ocurre cuando intentamos hacer eso.

Primero intenté usar Microsoft Word para abrir el archivo, y recibí el siguiente mensaje:

Microsoft Word cant open a file because its too largeMicrosoft Word cant open a file because its too largeMicrosoft Word cant open a file because its too large

A pesar de que no se pudo abrir el archivo utilizando WordPad y Notepad en una máquina basada en Windows, sí funcionó usando TextEdit en una máquina Mac OS X.

Pero se entiende el punto, y tener alguna forma que garantice abrir tales archivos extremadamente grandes sería una buena idea. En este consejo rápido, veremos cómo hacerlo utilizando Python.

Leyendo el archivo de texto usando Python

En esta sección, vamos a ver cómo podemos leer nuestro archivo grande utilizando Python. Digamos que quisiéramos leer las primeras 500 líneas de nuestro gran archivo de texto. Simplemente podemos hacer lo siguiente:

1
input_file = open('hg38.txt','r')
2
output_file = open('output.txt','w')
3
4
for lines in range(500):
5
    line = input_file.readline()
6
    output_file.write(line)

Observa que leímos 500 líneas de hg38.txt, línea por línea, y escribimos esas líneas en un nuevo archivo de texto output.txt, que debería verse como se muestra en este archivo.

Pero digamos que quisiéramos navegar directamente a través del archivo de texto sin extraerlo línea por línea y enviarlo a otro archivo de texto, especialmente porque esta forma parece más flexible.

Navegando a través de archivos de texto grandes

Si bien el paso anterior nos permitió leer archivos de texto grandes extrayendo líneas de ese archivo grande y enviando esas líneas a otro archivo de texto, sería preferible navegar directamente a través del archivo grande sin la necesidad de extraerlo línea por línea.

Simplemente podemos hacerlo utilizando Python para leer el archivo de texto mediante la pantalla de la terminal, del modo siguiente (navegando a través del archivo 50 líneas a la vez):

1
input_file = open('hg38.txt','r')
2
3
while(1):
4
    for lines in range(50):
5
        print input_file.readline()
6
    user_input = raw_input('Type STOP to quit, otherwise press the Enter/Return key ')
7
    if user_input == 'STOP':
8
        break

Como puedes ver en este script, ahora puedes leer y navegar a través del gran archivo de texto de forma inmediata usando tu terminal. Siempre que quieras suspenderlo, simplemente tienes que escribir STOP (es sensible a mayúsculas) en tu terminal.

Estoy seguro de que notarás lo fluido que es Python para navegar a través de un archivo de texto tan grande sin ningún problema. ¡Python está demostrando nuevamente ser un lenguaje que se esfuerza para facilitarnos la vida!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.