FICHEROS

En Python, para abrir un fichero usaremos la función open, que recibe el nombre del archivo a abrir. Por defecto, si no indicamos nada, el fichero se abre en modo lectura.

OPEN: MODO LECTURA


In [1]:
%pwd


Out[1]:
'H:\\Big Data\\Python\\howto'

In [2]:
fichero = open("../datos/cuna.txt")

La función open abrirá el fichero con el nombre indicado, en este caso el fichero cuna.txt. Si no tiene éxito, se lanzará una excepción. Si se ha podido abrir el fichero correctamente, la variable fichero nos permitirá manipularlo.


In [3]:
ls "../datos"


 El volumen de la unidad H es NebuchadnezzaR
 El n£mero de serie del volumen es: 26A1-2C9E

 Directorio de H:\Big Data\Python\datos

01/06/2017  06:52    <DIR>          .
01/06/2017  06:52    <DIR>          ..
31/05/2017  20:31               188 cuna.txt
31/05/2017  21:02               125 nuevo.txt
31/05/2017  21:12            19.816 radishsurvey.txt
               3 archivos         20.129 bytes
               2 dirs   6.822.563.840 bytes libres

In [4]:
fichero= open("../datos/cuna.txt")
for linea in fichero:
    print(linea)


Ya te vemos dormida.

Tu barca es de madera por la orilla.

Blanca princesa de nunca.

Duerme por la noche oscura.

Cuerpo y tierra de nieve.

Duerme por el alba, duerme.

Ya te alejas dormida.

Es posible, además, obtener todas las líneas del archivo utilizando una sola llamada a función readlines.


In [5]:
fichero = open("../datos/cuna.txt")
lineas = fichero.readlines()
lineas


Out[5]:
['Ya te vemos dormida.\n',
 'Tu barca es de madera por la orilla.\n',
 'Blanca princesa de nunca.\n',
 'Duerme por la noche oscura.\n',
 'Cuerpo y tierra de nieve.\n',
 'Duerme por el alba, duerme.\n',
 'Ya te alejas dormida.\n']

En este caso, la variable líneas tendrá una lista de cadenas con todas las líneas del fichero. Es importante tener en cuenta que cuando se utilizan funciones como archivo.readlines(), se está cargando en memoria el fichero completo. Siempre que una instrucción cargue un fichero completo debe tenerse cuidado de utilizarla sólo con ficheros pequeños, ya que de otro modo podría agotarse la memoria.


In [6]:
# Uso de rstrip para eliminar saltos de línea
lineas[0].rstrip()


Out[6]:
'Ya te vemos dormida.'


OPEN: MODO ESCRITURA

Si queremos abrir un fichero en modo escritura, hay que indicarlo como segundo parámetro de la función open.


In [26]:
# Abrimos el archivo nuevo y con el parámetro 'w' le indicamos que estamos en modo escritura
arc_write = open('../datos/nuevo.txt', 'w')

# Usamos los datos del archivo que hemos abierto antes 'cuna.txt':
# fichero = open("../datos/cuna.txt")
# lineas = fichero.readlines()
# Copia en el nuevo archivo solo las líneas pares de la variable 'lineas' que a su vez contiene todas las líneas
# del archivo 'cuna.txt'
for i, line in enumerate(lineas):
    if i % 2 == 0:    
        arc_write.write(str(i) + ' ' + line)
    else:
        pass

In [27]:
arc_write.close()       # cerramos el fichero

In [25]:
open('../datos/nuevo.txt').readlines()


Out[25]:
['0 Ya te vemos dormida.\n',
 '2 Blanca princesa de nunca.\n',
 '4 Cuerpo y tierra de nieve.\n',
 '6 Ya te alejas dormida.\n']

In [11]:
open('../datos/nuevo.txt', 'a').write('\nEste es el final')


Out[11]:
17

In [12]:
open('../datos/nuevo.txt').readlines()


Out[12]:
['0 Ya te vemos dormida.\n',
 '2 Blanca princesa de nunca.\n',
 '4 Cuerpo y tierra de nieve.\n',
 '6 Ya te alejas dormida.\n',
 '\n',
 'Este es el final']

In [13]:
open('../datos/nuevo.txt').readline()


Out[13]:
'0 Ya te vemos dormida.\n'

In [ ]: