Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Cómo manejar archivos en Python

alojamiento python
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

En cualquier lenguaje de programación, el manejo de archivos es un aspecto importante. Y Python también admite trabajar con archivos en diferentes modos, como lectura y escritura en archivos, y más.

Al final de este tutorial, podrá:

How to Read File in Python

Para abrir un archivo en Python, puede usar la sintaxis general: open('file_name','mode').

  • Aquí, file_name es el nombre del archivo.

Nota: Si el archivo que desea abrir está en el directorio de trabajo actual, puede mencionar solo el nombre del archivo. Si está en otra carpeta de su entorno de trabajo, debe incluir la ruta del archivo.

  • El parámetro mode especifica el modo en el que le gustaría abrir el archivo.

El modo predeterminado para abrir un archivo es leer—indicado por la letra 'r'. Sin embargo, es una práctica recomendada especificar el modo explícitamente.

Antes de comenzar, echemos un vistazo al archivo. lib.txt, que usaremos en este ejemplo.

📁 Descargue el archivo de texto y el código utilizado en este tutorial desde este repositorio de GitHub.

El fragmento de código a continuación muestra cómo puede abrir un archivo de texto 'lib.txt' en Python usando open() y lea su contenido.

file = open('lib.txt','r')
contents = file.read()
print(contents)
file.close()


# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

En el ejemplo anterior,

  • La open() función devuelve un objeto de archivo, y elegimos llamarlo file.
  • A continuación, llamamos al read() método en file.
  • La variable contents ahora contiene el contenido del archivo. Y lo imprimimos.
  • Finalmente, cerramos el archivo.

Sin embargo, si olvida cerrar el archivo, habrá un posible desperdicio de recursos. Si está trabajando con una gran cantidad de estos archivos, puede haber un uso considerable de la memoria. Esto se debe a que ha abierto varios archivos pero no ha cerrado ninguno.

Ahora, aprendamos una mejor manera de abrir archivos usando gestores de contexto. El fragmento de código a continuación muestra cómo puede usarlos.

with open('lib.txt','r') as f:
  contents = f.read()
  print(contents)

Al usar administradores de contactos para trabajar con archivos, no tiene que usar el close() método. Los archivos se cierran automáticamente una vez finalizada la operación de E/S.

How to Read Lines from File in Python

En nuestro archivo de texto de muestra, solo teníamos unas pocas líneas. Entonces, leer todo el contenido del archivo a la vez no fue un problema.

python-read-file

Sin embargo, cuando necesite leer archivos de gran tamaño, utilice el read() El método, como se muestra arriba, puede no ser muy eficiente.

De hecho, si el archivo de texto es de un tamaño muy grande, es posible que pronto se quede sin memoria. Por eso es posible que desee leer en líneas de solo lectura de un archivo de texto, y aprenderá cómo hacerlo en esta sección.

Uso del método readline() de Python para leer líneas de un archivo

La readline() El método lee una línea a la vez, del archivo.

Ejecute el siguiente fragmento de código.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  line = f.readline()
  print(line)


# Output
Hello, there!

Here are a few helpful Python libraries:

Puedes ver que después de la primera readline() llamada al método, se imprime la primera línea del archivo. Y la segunda llamada al readline() El método devuelve la segunda línea del archivo.

Esto se debe a que, después de la primera llamada al método, el puntero del archivo se encuentra al comienzo de la segunda línea.

En Python, puede usar el tell() método para obtener la ubicación actual del puntero del archivo. Y para mover el puntero del archivo a una ubicación específica, puede usar el seek() método.

En el fragmento de código a continuación, usamos f.seek(0) después de la primera llamada al método. Esto mueve el puntero del archivo al principio del archivo de texto. Por eso, en ambas ocasiones, se imprime la primera línea del archivo.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  f.seek(0)
  line = f.readline()
  print(line)


# Output
Hello, there!

Hello, there!

Uso del método readlines() de Python para leer líneas de un archivo

Hay otro método estrechamente relacionado llamado readlines().

Cuando ejecute el siguiente fragmento de código, verá que el readlines() El método devuelve una lista de todas las líneas del archivo.

with open('lib.txt','r') as f:
  lines = f.readlines()
  print(lines)


# Output
['Hello, there!\n', 'Here are a few helpful Python libraries:\n', 
'1) NumPy\n', '2) pandas\n', '3) matplotlib\n', 
'4) seaborn\n', '5) scikit-learn\n', '6) BeautifulSoup\n', 
'7) Scrapy\n', '8) nltk\n', '9) Bokeh\n', '10) statsmodels\n', '\n']

Usando Python's for Loop para leer líneas del archivo

Para leer las líneas de un archivo de texto, también puede usar el for lazo.

Una vez que tenga un objeto de archivo, puede usar for bucle para iterar a través del contenido del archivo, una línea a la vez e imprimirlos, como se muestra a continuación. Observe cómo accedemos solo a una línea a la vez y no leemos el contenido completo del archivo.

with open('lib.txt','r') as f:
  for line in f:
    print(line, end='')

Nota:: Al usar Python print() función, el separador predeterminado es una nueva línea:'\n' personaje. Pero en el archivo original, no tenemos estas nuevas líneas. Así que establezca el argumento del separador en una cadena vacía: end = '' para imprimir el contenido del archivo tal cual.

How to Read Chunks of Content from File in Python

In Python, también puede optar por leer el contenido del archivo en términos de pequeños fragmentos.

Lea el código a continuación:

  • Aquí, establecemos el chunk_size a 50. Esto significa que se leerán los primeros 50 caracteres del archivo y también los imprimiremos.
  • Ahora, llame al tell() método en el objeto de archivo f. Puede ver que el puntero del archivo ahora está en la posición 51, que es como se esperaba.
chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk)
  current = f.tell()
  print(f"Current position of file pointer: {current}")

# Output
Hello, there!
Here are a few helpful Python librar
Current position of file pointer: 51

También puede usar esta técnica para leer el archivo completo en pequeños fragmentos.

El siguiente fragmento de código muestra cómo puede hacerlo.

chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk,end='')

  while(len(chunk)>0):
    chunk = f.read(chunk_size)
    print(chunk,end='')

# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Aquí, usamos un while bucle para leer el contenido del archivo. Leemos el contenido del archivo en trozos de tamaño 50 hasta llegar al final del archivo. ✅

How to Write to File in Python

Para escribir en un archivo de texto en Python, debe abrirlo en el modo de escritura, especificando 'w'.

python-escribir-en-archivo

El fragmento de código a continuación muestra cómo hacerlo.

with open('new_file.txt','w') as f:
  f.write('Hello, Python!')

Ya veras eso 'new_file.txt' ha sido creado en su directorio de trabajo.

Ahora, ejecute la celda de código anterior una vez más.

En tu terminal ejecuta el siguiente comando:

cat new_file.txt

# Output: Hello, Python!

Idealmente, hemos escrito en el archivo dos veces. Entonces Hello, Python! debería haber sido impreso dos veces, ¿sí?

Pero verás que se ha impreso una sola vez. Bueno, esto se debe a que cuando abres un archivo en escribir (w) modo, básicamente exagerar el contenido del archivo con contenido nuevo.

Si quisiera usted add hasta el final del archivo sin sobrescribir el contenido existente, debe abrir el archivo en el anexar modo. Y verá cómo hacerlo en la siguiente sección.

How to Append to File in Python

Si desea agregar contenido a un archivo, sin sobrescribirlo, ábralo en el anexar modo.

Para hacer esto, use `'a'-a en anexar—y especificar el modo explícitamente.

A continuación, ejecute la siguiente celda de código dos veces.

with open('new_file.txt','a') as f:
  f.write('Hello, Python!')

Observe cómo el texto se imprime dos veces ahora, tal como lo adjuntamos al archivo.

cat new_file.txt

# Output: Hello, Python!Hello, Python!

Conclusión

Resumamos rápidamente lo que hemos repasado en este tutorial.

  • Ha aprendido las operaciones comunes de E/S de archivos, como leer, escribir y agregar a un archivo.
  • Además, también ha aprendido a utilizar el buscar() método para mover el puntero del archivo a una posición específica, y
  • cómo utilizar el contar() método para recuperar la posición actual del puntero del archivo.

Espero que hayas encontrado útil este tutorial. Ahora que ha aprendido a trabajar con archivos de texto en Python, aprenda a trabajar con archivos JSON en Python.

Relacionado:

Asegúrate de leer longitud de una lista en Python en 3 pasos.

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder