Fullscreen
Loading...
 
Imprimir Comparte esta página

curso python basico

Entrada, Salida y Archivos.


En ésta parte del curso, miraremos en detalle las maneras en que el usuario interaccionar con el programa o script.

Imprimir en pantalla

La manera mas sencilla de obtener una salida desde la pantalla, es por medio del comando print, como ya lo habíamos mencionado anteriormente no nos detendremos mucho en el.
  • Ejemplo:
    #Para python 2.7
    print "esto es un ejemplo del uso de print"
    
    
    #Para python 3
    print("esto es un ejemplo del uso de print")


Leer desde el teclado

Una característica muy útil de python, es que puede pedir al usuario que introduzca cierta información por medio del teclado. Python tiene un comando para leer datos desde la entrada estándar (casi siempre teclado). El comando input(), imprime la cadena de caracteres que se ponga dentro de los paréntesis, luego recibe datos desde la entrada estándar, y se los entrega (generalmente se asigna a una variable).
  • Ejemplo:
    #Pregunto al usuario su nombre, y lo guardo en la variable Nom.
    Nom=input('¿Cual es tu nombre? ')
    #Utilizo la variable Nom
    print('Gusto en conocerte ',Nom)

    Nota: Para la función input todo entra como cadenas de caracteres, luego si la entrada se va a usar como otra cosa (i.e. float, ent, etc.) se debe de debe de hacer una conversión o cast.

Abrir y cerrar archivos


Python maneja los archivos como objetos file, dichos objetos cuando son creados, se manipulan utilizando el operador ".".

La función open

Antes de realizar cualquier operación sobre un archivo, lo primero que se debe de hacer abrir dicho archivo. La función open crea un objeto tipo file, que se usa para llamar los métodos asociados a un archivo.

Sintaxis
objecto_file = open(nombre_archivo [, modo_uso][, buffering])

  • objecto_file: Nombre de la variable que va a guardar el objeto tipo file.
  • nombre_archivo: Nombre del archivo que se va a abrir.
  • modo_uso: Cual es el uso que se le va a dar a dicho archivo.
    r Abre el archivo en modo "solo lectura", situá el puntero al inicio del archivo
    rb Abre el archivo en modo "solo lectura binaria", situá el puntero al inicio del archivo
    r+ Abre el archivo en modo "lectura y escritura", situá el puntero al inicio del archivo
    rb+ Abre el archivo en modo "lectura y escritura binario", situá el puntero al inicio del archivo
    w Abre el archivo en modo "solo escritura", sobre escribe el archivo si existe, y sino crea uno nuevo
    wb Abre el archivo en modo "solo escritura binario", sobre escribe el archivo si existe, y sino crea uno nuevo
    w+ Abre el archivo en modo "lectura y escritura", sobre escribe el archivo si existe, y sino crea uno nuevo
    wb+ Abre el archivo en modo "lectura y escritura binaria", sobre escribe el archivo si existe, y sino crea uno nuevo
    a Abre el archivo en modo "solo append", situá el puntero al final del archivo, y sino existe crea uno nuevo
    ab Abre el archivo en modo "solo append", situá el puntero al final del archivo, y sino existe crea uno nuevo
    a+ Abre el archivo en modo "append Y lectura", situá el puntero al final del archivo, y sino existe crea uno nuevo
    ab+ Abre el archivo en modo "append Y lectura binario", situá el puntero al final del archivo, y sino existe crea uno nuevo
  • buffering: Uso de memoria temporal. Si se fija en 0 (cero) no hay buffering, si se pone en 1 (uno) se guarda de a una linea en la memoria temporal, mientras se accede al archivo. Para un entero mayor a uno, se lleva a cabo ese número de lineas de buffering, y para enteros negativos, el buffering se hace según el sistema (comportamiento por defecto.).


Atributos del objeto file

Una vez se crea un objeto file, se puede usar el operador"." para acceder a sus diferentes propiedades

  • Ejemplo:
    # Abro el archivo resultados.txt, en modo escritura binario, y se lo asigno a la variable archivo1
    archivo1 = open("resultados.txt", "wb")
    print ("Nombre del archivo: ", archivo1.name)
    print ("¿Está cerrado? : ", archivo1.closed)
    print ("Modo de apertura : ", archivo1.mode)
    archivo1.close()

Método close()

El método close() de un objeto file, bota toda la información que no se ha escrito, y cierra el archivo. Luego de usar close() no se puede leer o escribir el archivo.

Método write()

El método write() escribe cualquier cadena de caracteres en el archivo abierto. Las cadenas de caracteres en python no solo pueden guardar texto, también binarios.

  • Ejemplo: Modifico un poco el ejemplo anterior
    #Pregunto al usuario su nombre, y lo guardo en la variable Nom.
    Nom=input('¿Cual es tu nombre? ')
    # Abro el archivo resultados.txt, en modo escritura, y se lo asigno a la variable archivo1
    archivo1 = open("resultados.txt", "w")
    print ("Nombre del archivo: ", archivo1.name)
    print ("¿Está cerrado? : ", archivo1.closed)
    print ("Modo de apertura : ", archivo1.mode)
    archivo1.write("Nombre\n") #Escribe la cadena de caracteres "Nombre", y \n es un salto de linea
    archivo1.write(Nom) #Escribe la cadena de caracteres guardada en la variable Nom
    archivo1.write("\n") #Escribe un salto de linea
    archivo1.close()
    print ("¿Está cerrado? : ", archivo1.closed)

    Nota: Para obtener el directorio de trabajo, se usa os.getcwd() de la librería os.


Método read()

Lee una cadena de caracteres desde un archivo abierto. Python también lee archivos binarios.

  • Ejemplo:
    # Abro el archivo en modo lectura y escritura y lo asigno a la variable Archivo2 
    Archivo2 = open("resultados.txt", "r+")
    str = Archivo2.read(10) #leo 10 bytes del archivo
    print ("los primeros 10 bytes del archivo:  ", str) 
    # Cierro el archivo
    Archivo2.close()


Posición dentro del archivo

El método tell()
tell() dice cual es la posición actual dentro del archivo.
posicion = obj_file.tell()

El método seek(offset , ref)
  • offset: número de posiciones que se moverá el puntero.
  • ref: Desde que posición de referencia
    • 0: Desde el inicio del archivo.
    • 1: Desde la posición actual.
    • 2: Desde el final del archivo.

  • Ejemplo:
    # Abre el archivo 
    arch = open("resultados.txt", "r+")
    str = arch.read(6)
    print ("Los primeros 6 bytes : ", str)
    
    # Mira la posición actual
    pos = arch.tell()
    print ("posición actual : ", pos)
    str2 =arch.read()
    apell= input('Apellido: \n')
    arch.write(apell)
    # Devuelvo el puntero hasta el inicio
    pos = arch.seek(0, 0)
    str = arch.read()
    print ("Todo el archivo completo desde el inicio : \n", str)
    # Cierro
    arch.close()

Sistema de archivos desde python

El módulo os tiene todas las utilidades para realizar la administración de archivos desde python.
Renombrado de archivos
os.rename(nombre_actual, nuevo_nombre)

  • Ejemplo:
    # Cambio el nombre de resultados.txt a resultado.txt
    os.rename( "resultados.txt", "resultado.txt" )

Borrado de archivos
También se puede usar el módulo os para borrar archivos en el sistema operativo.
os.remove(nombre_archivo)


Directorios (carpetas)
Python por medio del módulo os puede crear directorios, borrarlos y moverse entre ellos.

  • mkdir(): Crea un directorio con el nombre que se le ponga entre los paréntesis.
    os.mkdir("nuevodir")

  • chdir(): Cambia de directorio, el argumento es el nombre del directorio destino.
    Ejemplo:
    import os
    
    # cambiando de directorio a "/home/nuevodir"
    os.chdir("/home/nuevodir")

  • getcwd(): Informa cual es el directorio actual
    os.getcwd()

  • rmdir(): Borra el directorio cuyo nombre es puesto como argumento.
    os.rmdir('nombre_dir')