Para que sirve?
Para almacenar informacion
que queremos que perdure en
el tiempo
no usar archivos que pesen muchos
gb porque es mas pesado y no
recomendada la manipulacion.
para ello usar bases de datos.
Modos de apertura
w
r
r+
Modulos importantes
pathlib
time
os
json
zipfile
Funciones Utiles
open(archivo, modo_apertura)
Path("ruta")
Palabras reservadas
as
with
Observaciones
-> las funciones de lectura mueven los punteros
-> con el metodo seek manipulamos el puntero
-> hay que cerrar los archivos
-> manejar las excepciones
Metodos Importantes
.write("texto") -> Para escribir en un archivo
.read() -> devuelve el texto de un archivo
.insert(pos, "linea") -> insertar una linea en una pos especifica
.stat() -> Para ver datos del archivo (fecha creacion, modificacion)
.st_atime() -> nos da el numero referente al timestamp
.unlink() -> Eliminar un archivo
.rename() -> renombrar un archivo
.exists() -> verificar si existe
.split() ->
.remove(ruta) ->
.seek(pos_linea) -> para mover el puntero de las lineas de archivo
.read_text() -> leer texto archivo
.write_text("separador".join(texto), "formato")
.join()
.readlines() -> lee todas las lineas y las devuelve en una lista
#Archivos csv
.writer(archivo)
.writerow(lista)
.reader()
Manipulacion de archivos
Si hay un error al momento de abrir el archivo podemos atraparla con un try catch, o podemos usar la instruccion with y ella misma se encargara de abrir el archivo, cerrarlo y manejar los errores
#importamos la funcion open
from io import open
#Escritura
texto = "Hola mundo"
archivo = open("archivo.txt", "w")
archivo.write(texto)
#Lectura Forma 1
archivo = open("archivo.txt", "r")
texto = archivo.read()
archivo.close()
#Lectura forma 2 - Lista
archivo = open("archivo.txt", "r")
texto = archivo.readlines()
archivo.close()
#
with open("archivo", "r") as archivo:
print(archivo.readlines())
archivo.seek(0)
for linea in archivo:
print(linea)
#Lectura + escritura
with open("archivo.txt", "r+") as archivo
texto = archivo.readlines()
archivo.seek(0)
texto[0] = "Nueva linea"
archivo.writelines(texto)
#cerrar archivo
archivo.close()
#Archivos comprimidos
from pathlib import Path
from zipfile import Zipfile
# Escribir archivos comprimidos
with ZipFile("archivos.zip", "w") as zip:
for path in Path().rglob("*.*")
if str(path) != "archivos.zip":
zip.write(path)
# Leer archivos comprimidos
with ZipFile("archivos.zip") as zip:
print(zip.namelist())
info = zip.getinfo("archivo--06_comprimido.py")
print (
info.file_size,
info.compress_size
)
zip.extractall("ruta_donde_quiero_poner_lo_descomprimido")
Ejemplo
#Modulo a usar siempre
from pathlib import path
#Modulo
from time import ctime
#Usar
archivo = Path("ruta")
#Algunos metodos
archivo.exists()
archivo.rename()
archivo.unlink()
archivo.stat()
archivo.stat().st_atime()
#Ver una fecha de forma mas legible
#de forma que el usuario lo entienda
#de mejor manera y no en formato unix
print("Acceso: ", ctime(archivo.stat().st_atime))
#leer un archivo
texto = archivo.read_text().split()
#Insertar una lista al texto
texto.insert(0, "hola mundo")
#Agregando la linea al archivo
archivo.write_text("\\n".join(texto), "utf-8")
Metodos magicos
__enter__
__exit__
Archivo CSV
Para este tipo de archivos debemos usar un objeto writer, reader que son objetos. Ademas, todos los datos de este tipo de archivos son strings (hasta los numeros).
Por otro lado, recordemos que cada linea[n] hace referencia a que en la pos n habra una seccion especifica del archivo, por ejemplo:
id, nombre, dato
linea[0] = id
linea[1] = nombre
import csv
# read
with open ("archivo.csv", "w") as archivo:
writer = csv.writer(archivo)
writer.writerow(["twit_id", "user_id", "text"])
writer.writerow([1000, 1, "primer tweet"])
writer.writerow([1001, 1, "segundo tweet"])
# leer
with open ("archivo.csv", "w") as archivo:
reader = csv.reader(archivo)
#modo 1
print(list(reader))
archivo.seek(0)
#modo 2
for linea in reader:
print(linea)
# Modificar una linea
with open ("archivo.csv", "r") as r, open("archivo_tmp.csv") as w:
reader = csv.reader(r)
writer = csv.writer(w)
for linea in reader:
if linea[0] == "1000":
writer.writerow([100, 20, "modificada"])
else:
writer.writerow(linea)
os.remove("archivos.csv")
os.rename("archivos_temp.csv", "archivos.csv")
Archivo JSON (Java Script Object Notation)
import json
from pathlib import Path
# Json
productos = [
{"id": 1, "name": "Surfboard"},
{"id": 2, "name": "Bici"},
{"id": 3, "name": "Skate"},
]
# Procesamos la data
data = json.dumps(productos)
# Creamos un archivo y escribimos en el
Path("archivos.json").write_text(data)
print(data)
# Leer json
data = Path("archivo.txt").read_text(encoding="uff-8")
productos = json.loads(data)
print(productos)
# Modificacion archivo json
data = Path("archivo.txt").read_text(encoding="uff-8")
productos = json.loads(data)
productos[0]["name"] = "Marc"
Path("archivos.txt").write_text(json.dumps(productos))