informatica:programacion:python:cursos:introduccion_programacion_python:ficheros
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| informatica:programacion:python:cursos:introduccion_programacion_python:ficheros [2023/04/19 16:54] – creado tempwin | informatica:programacion:python:cursos:introduccion_programacion_python:ficheros [2023/04/24 09:39] (actual) – [Manipulación de ficheros con with] tempwin | ||
|---|---|---|---|
| Línea 2: | Línea 2: | ||
| <WRAP center round info 60%> | <WRAP center round info 60%> | ||
| - | Notas de la formación por parte de la Consellería de Promoción do Emprego e Igualdade y el [[https:// | + | Bloque perteneciente al curso [[informatica:programacion: |
| </ | </ | ||
| + | Para manipular ficheros, siempre actuaremos de la misma forma: | ||
| + | - Apertura del fichero | ||
| + | - Operaciones de lectura o escritura | ||
| + | - Cierre del fichero | ||
| + | ===== Grabar datos en ficheros (escritura) ===== | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo escritura (" | ||
| + | # Si el fichero no existe, se crea | ||
| + | f = open(" | ||
| + | |||
| + | # Operaciones de escritura | ||
| + | f.write(" | ||
| + | f.write(" | ||
| + | |||
| + | # Cierre del fichero | ||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | Si queremos añadir contenido a un fichero existente, en lugar de sustituir todo su contenido, lo abriremos con el modo " | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo " | ||
| + | # Si el fichero no existe, se crea | ||
| + | f = open(" | ||
| + | |||
| + | # Operaciones de escritura | ||
| + | f.write(" | ||
| + | |||
| + | # Cierre del fichero | ||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | Si el fichero no existiese o estuviera vacío, //append// lo crearía y añadiría el texto que indicásemos. | ||
| + | |||
| + | ===== Cargar datos de ficheros (lectura) ===== | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo lectura (" | ||
| + | # especificando codificación UTF-8 | ||
| + | f = open(" | ||
| + | |||
| + | # Operaciones de lectura | ||
| + | datos = f.read() | ||
| + | print(datos) | ||
| + | # Cierre del fichero | ||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | Podemos indicar la ruta del fichero en '' | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo lectura (" | ||
| + | # especificando codificación UTF-8 | ||
| + | f = open("/ | ||
| + | |||
| + | # Operaciones de lectura | ||
| + | datos = f.read() | ||
| + | print(datos) | ||
| + | # Cierre del fichero | ||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | Podemos limitar los datos a leer como argumento del método '' | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo lectura (" | ||
| + | # especificando codificación UTF-8 | ||
| + | f = open(" | ||
| + | |||
| + | # Operaciones de lectura, limitando los datos a leer | ||
| + | # (número de bytes a leer) | ||
| + | datos = f.read(10) | ||
| + | print(f" | ||
| + | print(f" | ||
| + | |||
| + | # Cierre del fichero | ||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | Si nos interesa leer línea a línea: | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo lectura (" | ||
| + | # especificando codificación UTF-8 | ||
| + | f = open(" | ||
| + | |||
| + | # Operaciones de lectura, línea completa (válida para archivos de texto) | ||
| + | # (número de bytes a leer) | ||
| + | datos = f.readline() | ||
| + | print(f" | ||
| + | |||
| + | # Cierre del fichero | ||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | Otra forma de leer línea a línea un archivo de texto, aprovechando que '' | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo lectura (" | ||
| + | # especificando codificación UTF-8 | ||
| + | f = open(" | ||
| + | |||
| + | for linea in f: | ||
| + | print(f" | ||
| + | |||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | Alternativa: | ||
| + | |||
| + | <code python> | ||
| + | # Apertura del fichero en modo lectura (" | ||
| + | # especificando codificación UTF-8 | ||
| + | f = open(" | ||
| + | |||
| + | while True: | ||
| + | linea = f.readline() | ||
| + | if not linea: | ||
| + | break | ||
| + | print(f" | ||
| + | |||
| + | f.close() | ||
| + | </ | ||
| + | |||
| + | ===== Ejemplo de uso ===== | ||
| + | |||
| + | Lectura de un fichero con datos numéricos y hacer operaciones con todo ello. | ||
| + | |||
| + | Partiendo de un fichero '' | ||
| + | |||
| + | < | ||
| + | 2 | ||
| + | 4 | ||
| + | 1 | ||
| + | 66 | ||
| + | 1 | ||
| + | 3 | ||
| + | 5 | ||
| + | 9 | ||
| + | 10 | ||
| + | </ | ||
| + | |||
| + | Codificamos un programa que sume todos los números que contiene el fichero anterior: | ||
| + | |||
| + | <code python> | ||
| + | f = open(" | ||
| + | suma = 0 | ||
| + | |||
| + | for linea in f: | ||
| + | # Cada línea contiene un texto con un número, que tendremos | ||
| + | # que convertir a un valor numérico | ||
| + | valor = int(linea) | ||
| + | print(valor) | ||
| + | suma += valor | ||
| + | |||
| + | f.close() | ||
| + | print(f" | ||
| + | </ | ||
| + | |||
| + | ===== Manipulación de ficheros con with ===== | ||
| + | |||
| + | El bloque '' | ||
| + | |||
| + | <code python> | ||
| + | with open(" | ||
| + | for linea in f: | ||
| + | print(f" | ||
| + | </ | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | El uso de de '' | ||
| + | </ | ||
| + | |||
| + | ===== Ejemplos prácticos ===== | ||
| + | |||
| + | ==== Tratamiento ficheros CSV ==== | ||
| + | |||
| + | <code python> | ||
| + | import csv | ||
| + | |||
| + | # Lista vacía en la que se irán añadiendo todas las filas | ||
| + | organizaciones = [] | ||
| + | |||
| + | with open(" | ||
| + | reader1 = csv.reader(csvfile, | ||
| + | for row in reader1: | ||
| + | organizaciones.append(row) | ||
| + | | ||
| + | # Mostramos solo las 5 primeras | ||
| + | print( | ||
| + | </ | ||
| + | |||
| + | ==== Escritura CSV ==== | ||
informatica/programacion/python/cursos/introduccion_programacion_python/ficheros.1681916070.txt.gz · Última modificación: por tempwin
