Click here to load reader
Upload
daniel-arevalo
View
2.005
Download
3
Embed Size (px)
Citation preview
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
ARCHIVOS EN PYTHON
Trabajar con archivos significa: tomar datos desde un archivo ( en este caso un” .txt” creado en
block de notas), leerlos y trabajar con ellos.
No tiene nada de distinto de lo que utilizamos en procesamiento de texto, simplemente abrimos
el archivo, realizamos algún tipo de operación y luego lo cerramos.
Lo primero que debemos saber es que al trabajar y abrir un archivo, SIEMPRE debemos cerrarlo
una vez que hayamos terminado de trabajar con él.
Debemos tener en consideración lo siguiente:
Accedemos al archivo de manera secuencial: se leen las línea en orden ( de arriba hacia
abajo) desde que abrimos el archivo.
Podemos abrir el archivo en forma de Lectura(r): Sólo para leerlo y trabajar con su
contenido o como Escritura (w): Para escribir nueva información sobre él.
Podemos volver al inicio de un archivo mientras lo estamos procesando
Para comprender mejor como funciona un archivo veremos el siguiente ejemplo:
Creemos un archivo llamado “EJEMPLOTEBAN.txt” En block de Notas ( Inicio -> Todos Los
Programas -> Accesorios -> Blcok de Notas ) con el siguiente contenido:
Lo primero que haremos será crear un programa que nos permita Leer los datos dentro de
“EJEMPLOTEBAN.txt” y mostrarlos por pantalla.
Utilizaremos el código Nombre = open(“NombreArchivo.txt”,”Forma en que se abrirá”)
El Nombre puede ser un Nombre cualquiera, perro, gato, archivo, hola, etc.….
“Nombre Archivo.txt” debe ser el nombre real del archivo en el PC, en este caso,
“EJEMPLOTEBAN.txt”
“Forma en que se abrirá” se refiere a si el archivo se abrirá como Lectura,Escritura o
Modificación , si se abre en modo Lectura colocamos “r” y si se abrirá en modo Escritura
colocamos “w”, y si Agregaremos algo al final del texto, agregamos “a”.
Quedan dos días para el certamen
Estoy seco para programar en Python
Porque voy a todas las ayudantías
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
NOTA: Supongo que “r” viene de read ( leer), “w” de write ( escribir) y “a” de add(agregar),
si no fuera así, por lo menos sirve para acordarse de cual es cual.
El código para mostrar en pantalla el texto incluido en el .txt quedaría de la siguiente
manera
Ocuparemos el comando NombreArchivo.readLine() para leer una línea del archivo de
texto, a continuación se presenta el código para leer SOLO UNA LINEA DEL archivo de
texto.
En pantalla se mostrará lo siguiente
Si nos fijamos bien, luego de que imprime la primera línea nos genera un salto de línea,
esto lo podemos eliminar ocupando El código .strip() de la siguiente forma:
Mostrando en pantalla:
Como podemos darnos cuenta, imprimir una sola línea del archivo no nos sirve mucho, debemos
encontrar una forma de mostrar el archivo completo. Para eso utilizaremos un for pero esta vez no
usaremos for i in range (Donde la variable i variaba entre dos números enteros), esta vez
ocuparemos for i in NombreArchivo.xreadlines() (Donde i va a tomar el valor de la primera línea,
luego de la segunda y así sucesivamente hasta que el archivo termine)
Para mostrar el archivo completo por pantalla basta con este código:
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
Ocupamos el código strip() nuevamente para eliminar los saltos de línea, y en pantalla nos
mostrará lo siguiente:
:
Ya vimos lo básico, como leer datos de un archivo ahora compliquemos un poco el asunto viendo
como agregar una línea nueva al texto anterior.
Antes que todo, debemos saber que al abrir un archivo en modo Escritura ( Agregando una “w” en
el segundo parámetro) El archivo se abre en blanco, o sea, perdemos todo su contenido anterior)
es por esto que en vez de agregar una “w” agregaremos una “a” Para agregar texto alfínal del
archivo conservando los datos anteriores.
El código es bien sencillo. Basándonos en el texto de EJEMPLOTEBAN.txt, agregaremos una frase
cualquiera la cual digitaremos por teclado:
Explicación:
Definimos el archivo salida con “a” para agregar texto al final
Código salida.write() para Escribir/Imprimir una frase al final del texto
Cerramos el archivo
Para poder imprimirlo debeos abrirlo nuevamente pero ahora como modo lectura “r”
Luego imprimimos con el código entrada.read() que se encarga de leer todo el archivo
Cerramos el archivo.
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
En esta oportunidad Ingrese la frase “PORQUE NO ME DA FLOJERA” y por pantalla nos mostrará lo
siguiente:
LES RECOMIENDO QUE NO SÓLO MIREN LO QUE SE VE EN PANTALLA, SI NO QUE VAYAN
ABRIENDO EL ARCHIVO .TXT PARA QUE COMPRUEBEN Y SE CONVENZAN DE QUE
REALMENTE CAMBIA.
Ya vimos como leer un archivo existente y como agregar texto al final del archivo existente, ahora
veremos cómo CREAR un archivo que no existe.
Utilizaremos la misma estructura anterior pero esta vez en vez de colocar “r” o “a” pondremos
“w”, y el nombre del archivo puede ser cualquiera EXCEPTO UNO QUE YA EXISTA.
Y el archivo en block de notas se crea y queda de la siguiente manera:
Compliquemos algo más las cosas. Creemos un programa que cuente la cantidad de caracteres
que posee el archivo de texto anterior (“nuevos.txt”), si los contamos manualmente, deberían ser
exactamente 42 (Contando los espacios).
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
EL código sería así:
Abrimos el archivo de entrada
Definimos variable Suma como 0
Le vamos dando valores de las líneas a la variable i
Suma será suma más a longitud de la línea
El proceso se repite hasta que no queden mas líneas que contar
Imprimimos suma
Cerramos el archivo.
En pantalla nos mostrará:
Ahora, creemos un programa que nos cuente cuantas PALABRAS tiene el archivo
Para eso utilizaremos el código “Split()” que nos separa en una matriz, palabras dependiendo de
un patrón, como las palabras son separadas por un espacio, utilizaremos Split(“ “).
Si quisiéramos separar palabras por signos por ejemplo “%” debemos ocupar Split(“%”)
Debemos entender, que la matriz se generará por línea, por lo tanto también necesitamos una
variable suma que nos registre la suma de palabras por línea.
En pantalla nos mostrará:
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
Algo más simple: Contar la cantidad de líneas que tiene el archivo de texto: Basta con tener un
contador dentro del for y luego imprimirlo ya que leerá líneas y no realizará la acción, y el for se
ejecutará tantas veces como líneas haya, por lo tanto, el contador aumentará tantas veces como
líneas haya.
En pantalla se mostrará:
Se deja como ejercicio, hacer que el programa cuenta la cantidad de LETRAS que hay en
un archivo, sin contar espacios
Por último, realizaremos el ejercicio propuesto en la diapositiva 19 del sitio web oficial del ramo.
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
Analizando el enunciado:
Debemos calcular los promedios de los alumnos
Debemos almacenar los datos de los alumnos reprobados en un archivo y los aprobados
en otro
Contamos con este archivo para comenzar a trabajar:
Lo primero que haremos será crear un archivo “borrador.txt” donde almacenaremos los alumnos
de la siguiente manera:
Nombre:Apellido:Promedio
Debemos abrir el archivo alumnos.txt en modo Lectura
Debemos crear un archivo borrador.txt
Mediante un ciclo for y la herramienta Split leemos por línea y separamos en matrices
mediante el signo “:”
Transformamos los tres últimos en números enteros y calculamos el promedio en una
nueva variable
Imprimimos en borrador.txt de la forma Nombre:Apellido:Promedio
Esteban Rodríguez Ayudante IWI-121 1 Semestre 2011
Universidad Técnica Federico Santa María
Ahora que tenemos los promedios calculados y almacenados, debemos:
Abrir el archivo borrador.txt como Lectura
Crear dos archivos, uno para reprobados y otro para aprobados
Si Nota<55, copiar alumno en reprobados
Si Nota >= 55, copiar alumno en aprobado
Les subiré también el código comentado para que entiendan mejor.