Ficheros

Cuando se trabaja con gran cantidad de datos, lo más normal es que no se introduzcan por teclado, sino que se nos suministre un fichero con toda la información. Vamos a hacer programas similares a los anteriores, pero en este caso los datos van a estar en un fichero.

Lo primero que hacemos es abrir el fichero con la instrucción open. Por ejemplo: 

fichero=open ('datos.txt','r') 

En este caso, datos.txt es el fichero que estamos abriendo, y r es un parámetro que indica que lo que vamos a hacer es leer. Si lo abrimos para escribir, tendríamos que poner 'w'. fichero es un parámetro que utilizaremos para en otras instrucciones indicando que nos referimos a ese fichero que hemos abierto con esa instrucción. Podemos usar cualquiero otra palabra en lugar de fichero. 

El fichero deberá estar en la misma carpeta que el programa de python. En otro caso habrá que especificar la ruta: por ejemplo: fichero=open('c:\datos\datos.txt','r') o bien fichero=open('datos\datos.txt','r'). En el primer caso, la carpeta datos está directamente dentro de c: y en el segundo está dentro de la carpeta que contiene el programa. El primer caso es direccionamiento absoluto, y el segundo relativo.

Al final del programa habrá que escribir fichero.close() para cerrar el fichero. 

Ahora si escribes lo siguiente: 

for linea in fichero:

print(linea)

Lo que hará es que irá leyendo las líneas del fichero y asignándolas a la variable linea hasta que acabe el fichero. Cada vez que lea una, la imprimirá.

Esta es otro ejemplo de las particularidades de python. Una instrucción como for linea in fichero es bastante chocante para un programador de C, quien echará de menos una instrucción tal como lee la siguiente línea y asígnala a la variable tal. Da la sensación de que python aquí está suponiendo qué queremos hacer más que ejecutar ciegamente una instrucción. Python es así.

Si quieres escribir un número que has calculado y a continuación un texto, por ejemplo la variable i seguida de "Antonio" no puedes poner print(i) y luego print ("Antonio") porque los escribirá en distinta línea, dado que print escribe siempre en una línea nueva. Si escribes print (i+"Antonio") te dará error porque i es un número y "Antonio" una cadena y no se pueden sumar. Algunos lenguajes sí lo hacen. Entienden que tú quieres convertir el número en cadena y lo hacen por tí. Python no. Debes convertir el número en cadena tú. Debes hacerlo de esta manera: print (str(i)+ " Antonio") . Fíjate que he metido un espacio delante de Antonio para que lo separe.

 Ejercicio 7. Crea un fichero txt con 5 líneas de texto. Haz un programa que escriba el mismo texto pero anteponiendo a cada línea el número de línea seguido de un punto y un espacio.