[Codigo + Introduccion] Manejo de archivos csv en python

Iniciado por blozzter, Agosto 30, 2011, 11:31:49 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 30, 2011, 11:31:49 PM Ultima modificación: Marzo 23, 2015, 12:13:44 PM por Expermicid
buenas,
me puse a buscar sobre diferentes tipos de ficheros que pudiesen servir para el almacenamiento de datos y que pudieran ser manipulados en python. así fue como llegué al tipo de ficheros csv, el cual me pareció interesante y útil.
vemos un resumen de su definicion (wikipedia) :

CitarLos ficheros CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas  y las filas por saltos de línea.

un ejemplo:

Código: php
987,juan,87345,10 norte 342
876,pedro,43649,8 oriente 342
123,jorge,03342,av. libertad 23
69,vicente,61560,valencia nº183



python trae incorporado un modulo para manejar este tipo de archivos, el modulo csv que se importa como cualquier otro.

algunos apuntes de como manejar el módulo:

para abrir un archivo csv con el permiso correspondiente:

archivo = csv.reader(open("datos_agenda.csv", "rb"))   ==>> abrimos con permiso de solo lectura

archivo = csv.writer(open("datos_agenda.csv", "ab"))   ==>> abrimos con permiso append (agregar al final)

archivo = csv.writer(open("datos_agenda.csv", "wb"))  ==>> abrimos con permiso de escritura, si no existe, lo crea.



escribiendo en un fichero csv:

archivo.writerow([nombre, numero, email])  =>> en donde le pasamos en una lista lo que queremos insertar.


lo que me llamó la atención es que estos archivos no necesitan ser cerrados a diferencia de cuando abrimos un .txt por ejemplo.
para terminar, dejo simple ejemplo de la manipulación de estos archivos.

el ejemplo trata de una agenda (nada nuevo, lo sé, pero sirve para entender el manejo).
he hecho 2 funciones, una que agrega un contacto al archivo datos_agenda.csv y otra función que recorre todo el archivo mostrado los datos de los contactos.

la documentación que he encontrado ha sido escasa, si alguien se interesa podría postear una función que elimine los datos de un contacto pre-almacenado; o que permita modificar la información. así aprendemos todos.


Código: python

#aprendiendo manejo de archivos csv en Python
#comunidad Underc0de

import csv, sys, os

def mostrar_contactos():
    archivo = csv.reader(open("datos_agenda.csv", "rb"))
    for index,row in enumerate(archivo):
        print "contacto: " + str(index+1)
        print "-------------------"
        print "nombre: " + row[0] + "  || numero: " + row[1] + "  || email: " + row[2]
        print "\n"
       
def agregar_contacto(nombre, numero, email):
    archivo = csv.writer(open("datos_agenda.csv", "ab"))
    archivo.writerow([nombre, numero, email])
       
def mostrar_menu():
    print "gestion de contactos"
    print "[1] mostrar contactos."
    print "[2] agregar contacto."
    print "[3] salir."
   
salir = False

if not os.path.exists('datos_agenda.csv'):
    archivo = csv.writer(open("datos_agenda.csv", "wb"))
   

while (salir == False):
    mostrar_menu()
    opcion = input("==> opcion: ")
    if opcion == 1:
        mostrar_contactos()
    elif opcion == 2:
        nombre = raw_input("==> nombre: ")
        numero = raw_input("==> numero: ")
        email = raw_input("==> email: ")
        agregar_contacto(nombre, numero, email)
    elif opcion == 3:
        sys.exit()


¡< blozzter >!

Me laten más las Regexp(import re)
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola, mira encontre esto: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta fijate si te sirve, yo estoy diseñando algo y esto me viene al pelo, asi que lo voy a probar, cuando tenga algo lo posteo asi ven como se maneja, saludos.