Uno de los aspectos más poderosos de Python es su capacidad para interactuar con archivos de texto, y no solo con variables como lo hemos hecho hasta ahora. Desde archivos TXT hasta CSV y JSON, Python facilita la lectura, escritura, y modificación de archivos externos. Imagina tener la capacidad de acceder a un cuento clásico, como el de Caperucita Roja, para extraer, manipular y enriquecer datos. Vamos a explorar cómo hacerlo paso a paso.
¿Cómo abrir y leer un archivo en Python?
Para leer un archivo en Python, primero es necesario abrirlo utilizando la función open(). Supongamos que queremos leer un archivo llamado caperucita.txt:
# Abrimos el archivo en modo lectura
with open("caperucita.txt", "r") as file:
# Leemos cada línea y eliminamos los saltos de línea al final
for line in file:
print(line.strip())
open("caperucita.txt", "r"): Abre el archivo en modo lectura.
line.strip(): Quita los espacios y saltos de línea al final de cada línea.
¿Cómo almacenar líneas de un archivo en una lista?
Si deseas almacenar todas las líneas de un archivo en una lista, puedes emplear el método readlines(). Esto es especialmente útil si planeas manipular o analizar el contenido posteriormente.
# Abrimos el archivo y almacenamos las líneas en una lista
with open("caperucita.txt", "r") as file:
lines = file.readlines()
print(lines)
Este código:
Carga todas las líneas del archivo en una lista llamada lines.
Las líneas incluyen los caracteres de salto de línea \n.
¿Cómo escribir o añadir texto en un archivo?
Hay casos donde necesitarás modificar el contenido de un archivo, sea para agregar nueva información o sobreescribirla. Aquí es donde los modos de escritura (w para escribir) y anexar (a para añadir) se vuelven esenciales.
Añadiendo texto al final sin borrar el contenido existente
Para añadir texto al final del archivo sin eliminar el contenido previo, se utiliza el modo a:
# Abrimos el archivo en modo añadir y escribimos una línea al final
with open("caperucita.txt", "a") as file:
file.write("\n\nBy:ChatGPT.")
Sobreescribiendo un archivo
Para sobreescribir todo el contenido, se utiliza el modo w, pero es fundamental tener cuidado, ya que esto eliminará todo el texto existente. Aquí un ejemplo:
# Abrimos el archivo en modo escritura y sobreescribimos su contenido
with open("caperucita.txt", "w") as file:
file.write("\n\nBy:ChatGPT.")
¿Cuáles son los beneficios de automatizar tareas de archivo con Python?
La capacidad de Python para manejar archivos es una puerta abierta a la automatización de tareas mediante scripting. Esto permite procesos eficientes de lectura y manipulación de datos, ahorrando tiempo y esfuerzos repetitivos. Por ejemplo, podrías crear un script que automáticamente analice y procese varios archivos de texto.
Desafío: ¿Cuántas líneas tiene el cuento de Caperucita Roja?
Ahora, te dejo un reto: cuenta el número de líneas en el archivo caperucita.txt y comparte tu resultado en los comentarios. Este ejercicio no solo reforzará tus habilidades, sino que también te acercará a comprender el poder del manejo de archivos en Python.
¡Sigue explorando y practicando para dominar estas habilidades! Python ofrece un camino rico en posibilidades para interactuar con datos y archivos de manera eficiente y efectiva.
# RETO conteo de las lineas del cuento de caperucitawithopen("clase30/caperucita.txt","r")asfile: lines =file.readlines()print(len(lines))# 63
Genial!
Genial, lo hice igual
El manejo de archivos .txt en Python se realiza principalmente con las funciones integradas para abrir, leer, escribir y cerrar archivos. Python ofrece el método open() para trabajar con archivos, y soporta diversos modos de acceso según las necesidades (lectura, escritura, etc.).
### Operaciones básicas con archivos .txt en Python
1. **Abrir un archivo**: open() es la función utilizada para abrir archivos en diferentes modos.
```python
archivo = open('archivo.txt', 'r') # Abre el archivo en modo lectura
```
Donde 'r' indica que el archivo se abrirá en modo **lectura**.
2. **Leer el contenido de un archivo**: Existen varios métodos para leer archivos:
- **Leer todo el archivo**: read()
- **Leer una línea a la vez**: readline()
- **Leer todas las líneas y almacenarlas en una lista**: readlines()
Ejemplo de cómo leer un archivo:
```python
with open('archivo.txt', 'r') as archivo:
contenido = archivo.read() # Lee todo el contenido
print(contenido)
```
Al usar with, el archivo se cierra automáticamente después de finalizar las operaciones.
3. **Escribir en un archivo**: Para escribir en un archivo, se usa el modo 'w' (escritura), 'a' (agregar al final) o 'x' (crear un archivo nuevo).
- **Sobrescribir** (modo 'w'):
```python
with open('archivo.txt', 'w') as archivo:
archivo.write("Este es un nuevo contenido.\n")
```
- **Agregar al final** (modo 'a'):
```python
with open('archivo.txt', 'a') as archivo:
archivo.write("Este contenido se agrega al final.\n")
```
4. **Leer y escribir un archivo**: El modo 'r+' permite leer y escribir en el mismo archivo.
```python
with open('archivo.txt', 'r+') as archivo:
contenido = archivo.read()
archivo.write("Texto adicional.")
```
### Modos de apertura de archivos
- 'r': **Lectura**. Da error si el archivo no existe.
- 'w': **Escritura**. Sobrescribe el archivo si ya existe o lo crea si no.
- 'a': **Agregar**. Añade al final del archivo si existe o lo crea si no.
- 'x': **Crear**. Da error si el archivo ya existe.
- 'b': **Modo binario** (se combina con los otros modos, por ejemplo, 'rb' para leer un archivo binario).
### Ejemplo completo
\# Escritura de un archivo
withopen('archivo.txt','w')as archivo:  archivo.write("Primera línea del archivo.\n")  archivo.write("Segunda línea del archivo.\n")
\# Lectura de un archivo
withopen('archivo.txt','r')as archivo:  for linea in archivo:  print(linea.strip())
\# Agregar más contenido al archivo
withopen('archivo.txt','a')as archivo:  archivo.write("Tercera línea del archivo.\n")
### Gestión de Excepciones al manejar archivos
Es buena práctica manejar posibles errores al trabajar con archivos, como archivos inexistentes o problemas de permisos.
try:  with open('archivo\_inexistente.txt', 'r') as archivo:  contenido = archivo.read()except FileNotFoundError:  print("El archivo no existe.")except IOError:  print("Error al leer o escribir en el archivo.")
### Cerrar archivos
Si no usas with, debes cerrar el archivo manualmente para liberar recursos:
archivo =open('archivo.txt','r')contenido = archivo.read()archivo.close()# Cierra el archivo
### Resumen:
- open() es la función principal para abrir archivos.
- Los archivos pueden leerse con read(), readline(), o readlines().
- Se puede escribir o agregar al archivo con write().
- Utiliza with para abrir archivos, ya que gestiona automáticamente el cierre del archivo.
withopen("cuento.txt","r")asfile: lineas =file.readlines()print("El total de lineas que tiene el archivo son: ",len(lineas))
Brutal!
este es mi código, es un poco diferente pero funciona 😁:
# aprendiendo a manejar archivos con python - scripting
# contar el numero de lineas de un archivo txt
#
file =open('cuento.txt','r')lines = file.readlines()n_lines =0for line inlines: n_lines +=1print(f"el cuento del archivo tiene {n_lines} lineas")file.close()# el cuento del archivo tiene 59 lineas
Claps!
Gracias por tu aporte
en Mac, a pesar de tener ambos archivos en la misma carpeta tuve que poner la ruta del archivo txt
Debe ser algo de configuración, en Windows me pasa exactamente lo mismo.
gllermo y cristian mora eso pasa porque no debe estar exactamente en la misma carpeta tiene que estar en la carpeta anterior por ejemplo yo deje el texto al lado de la clase pero la solución fue sacarlo de esa carpeta a la anterior y ahí si me funciono
Encapsulamiento en Python (Copilot)
En Python, el encapsulamiento no es tan estricto como en Java o C++. Python utiliza convenciones de nombres para indicar que un atributo es privado, pero no impide completamente el acceso a estos atributos. Se utiliza un guion bajo doble (__) para indicar que un atributo es privado, y Python aplica un renombramiento de atributos (name mangling) para dificultar el acceso directo.
En el siguiente ejemplo se podria acceder al atributo privado utilizando un nombre renombrado.
#Conteo de líneas
withopen('cuento.txt','r')asfile: lines = file.readlines()Lines=0for line inlines:Lines+=1print(f"hay {Lines} líneas en el cuento")#tiene 59 líneas
EnPython,.readlines() no es una palabra reservada, sino un método de los objetos de archivo(file objects).Los métodos como .readlines(),.read(), y .write() son funciones integradas que te permiten interactuar con archivos de manera eficiente.Métodos comunes para trabajar con archivos
.read():Lee todo el contenido del archivo y lo devuelve como una cadena..readline():Lee una sola línea del archivo y la devuelve como una cadena..readlines():Lee todas las líneas del archivo y las devuelve como una lista de cadenas, donde cada cadena es una línea del archivo..write():Escribe una cadena en el archivo..writelines():Escribe una lista de cadenas en el archivo.Ejemplo práctico
Supongamos que tienes un archivo llamado example.txt con el siguiente contenido:Leer todo el contenido del archivo
Salida:Leer una sola línea del archivo
Salida:Leer todas las líneas del archivo
Salida:Consejos y contexto
Contexto de uso:Utiliza.readlines() cuando necesites procesar cada línea del archivo por separado.Por ejemplo, si quieres contar el número de líneas o buscar una línea específica.Eficiencia:.readlines() carga todo el contenido del archivo en memoria como una lista.Para archivos muy grandes, esto puede ser ineficiente.En tales casos, es mejor iterar sobre el archivo línea por línea usando un bucle for.```En Python, `.readlines()` no es una palabra reservada, sino un método de los objetos de archivo (file objects). Los métodos como `.readlines()`, `.read()`, y `.write()` son funciones integradas que te permiten interactuar con archivos de manera eficiente.
### Métodos comunes para trabajar con archivos
1. `.read()`: Lee todo el contenido del archivo y lo devuelve como una cadena.
2. `.readline()`: Lee una sola línea del archivo y la devuelve como una cadena.
3. `.readlines()`: Lee todas las líneas del archivo y las devuelve como una lista de cadenas, donde cada cadena es una línea del archivo.
4. `.write()`: Escribe una cadena en el archivo.
5. `.writelines()`: Escribe una lista de cadenas en el archivo.
### Ejemplo práctico
Supongamos que tienes un archivo llamado `example.txt` con el siguiente contenido:
HolaMundoPython
#### Leer todo el contenido del archivo
with open('example.txt', 'r') as file:content = file.read()print(content)
Salida:
HolaMundoPython
#### Leer una sola línea del archivo
with open('example.txt', 'r') as file:line = file.readline()print(line)
Salida:
Hola
#### Leer todas las líneas del archivo
with open('example.txt', 'r') as file:lines = file.readlines()print(lines)
Salida:
\['Hola\n', 'Mundo\n', 'Python\n']
### Consejos y contexto
* **Contexto de uso**: Utiliza `.readlines()` cuando necesites procesar cada línea del archivo por separado. Por ejemplo, si quieres contar el número de líneas o buscar una línea específica.
* **Eficiencia**: `.readlines()` carga todo el contenido del archivo en memoria como una lista. Para archivos muy grandes, esto puede ser ineficiente. En tales casos, es mejor iterar sobre el archivo línea por línea usando un bucle `for`.
Les dejo esta excelete pagina para generar datos falsos.
para poder practiccar.
Me costo un poco, sin embargo, pienso que ayuda desarrollar la lógica, se deben omitir los saltos de líneas y este es mi código
classLectura(): def __init__(self,txt: str,funcion: str): self.txt= txt
self.funcion= funcion
def leerArchivoPorLinea(self):withopen(self.txt, self.funcion, encoding='utf-8')asfile:for linea infile:print(linea.strip()) def todasLasLineasDeUnaLista(self):withopen(self.txt, self.funcion, encoding='utf-8')asfile: lines = file.readlines()print(lines) def anadirTexto(self,texto: str):withopen(self.txt,'a', encoding='utf-8')asfile: # 'a' para añadir
file.write(f"\n\n{texto}") def sobreEscribirTexto(self,texto: str):withopen(self.txt,'w', encoding='utf-8')asfile: # 'w' sobrescribe
file.write(f"{texto}")return f"Archivo sobrescrito con: {texto}"# Ruta del archivo
txt ="./ARCHIVOS/cuento_fantasia.txt"# Ejemplo de uso
lectura =Lectura(txt,'r') # 'r' solo para lectura
# Sobrescribir contenido
nuevo_texto ="\n\nBy: ChatGPT"resultado = lectura.sobreEscribirTexto(nuevo_texto)print(resultado)
El reto de la clase (3 alternativas):
# El reto de contar las lineas del archivowithopen("class30_cuento-caperucita.txt","r")asfile: contador =0for lineas infile: contador +=1print(f"El archivo tiene {contador} líneas.")# Otra forma de contar las líneaswithopen("class30_cuento-caperucita.txt","r")asfile: lines =file.readlines()print(f"El archivo tiene {len(lines)} líneas.")# Otra forma de contar las líneas con list comprehensionwithopen("class30_cuento-caperucita.txt","r")asfile: contador =sum(1for _ infile)print(f"El archivo tiene {contador} líneas.")
Para realizar el reto, me topé jugando con 2 formas:
with open('cuento.txt','r') as file: nume_lineas = len(file.readlines()) print(nume_lineas)
RETO
withopen('/content/drive/MyDrive/Platzi/Curso de Python/caperucita.txt','r')asfile: lines =file.readlines()print(f'El total de lineas del archivo es: {len(lines)}')