El manejo de archivos en Python se realiza mediante la función open(), que genera un objeto archivo. La sintaxis básica es:
objeto_archivo = open(ruta_archivo, modo_apertura)
El parámetro ruta_archivo es una cadena con la ubicación del archivo, y modo_apertura define el tipo de operación: lectura ('r'), escritura ('w'), adición ('a'), etc., con 'r' como predeterminado.
Modos de Apertura de Archivos
- r: Solo lectura, puntero al inicio.
- w: Escritura, crea o sobrescribe el archivo.
- a: Adición, escribe al final; crea si no existe.
- b: Modo binario (se combina con otros, ej. 'rb').
- +: Lectura y escritura (ej. 'r+', 'w+').
Ejemplo de escritura:
# Abrir archivo en modo escritura
gestor = open('registro.txt', 'w')
gestor.write('Contenido de prueba')
gestor.flush() # Asegurar escritura
gestor.close() # Cerrar explícitamente
Ejemplo de lectura:
gestor = open('registro.txt', 'r')
linea = gestor.readline() # Lee la primera línea
print(linea)
gestor.close()
Métodos del Objeto Archivo
Los objetos archivo incluyen métodos para operaciones específicas:
read(n): Lee n bytes o todo el contenido si se omite.readline(): Lee una sola línea, devuelve cadena vacía al final.readlines(): Lee todas las líneas como una lista.write(texto): Escribe texto en el archivo, retorna número de caracteres.tell(): Indica la posición actual del puntero en bytes.seek(offset, whence): Mueve el puntero;whence0 para inicio, 1 para posición actual, 2 para fin.close(): Cierra el archivo y libera recursos.truncate(): Vacía el contenido del archivo (requiere modo de escritura).
Uso de read() con límite de bytes:
with open('/etc/passwd', 'r') as f:
fragmento = f.read(15) # Lee los primeros 15 bytes
print(fragmento)
Ejemplo con readlines() y manejo de puntero:
f = open('datos.csv', 'r')
todas_lineas = f.readlines() # Lista de todas las líneas
f.seek(0) # Regresar al inicio
linea_especifica = f.readlines(10)[0] # Lee hasta 10 bytes y toma la primera línea
f.close()
Para escritura y lectura combinada:
with open('bitacora.log', 'w+') as gestor:
gestor.write('Entrada inicial\n')
gestor.seek(0) # Mover puntero al inicio
contenido = gestor.read()
print(contenido)
El método tell() ayuda a rastrear posiciones:
archivo = open('imagen.bin', 'rb')
posicion_inicial = archivo.tell() # 0
archivo.read(8) # Lee 8 bytes
posicion_actual = archivo.tell() # 8
archivo.close()
Para reposicionar el puntero con seek(), como f.seek(-5, 2) para retroceder 5 bytes desde el final. El uso de with garantiza el cierre automático, evitando fugas de recursos. El método truncate() es útil para resetear el contenido de un archivo en modo escritura.