Underc0de

Programación Scripting => Python => Mensaje iniciado por: blozzter en Agosto 30, 2011, 11:31:49 PM

Título: [Codigo + Introduccion] Manejo de archivos csv en python
Publicado por: blozzter en Agosto 30, 2011, 11:31:49 PM
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:

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) [Seleccionar]

#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()


Título: Re:[codigo + introduccion]manejo de archivos csv en python
Publicado por: JaAViEr en Agosto 30, 2011, 11:59:12 PM
Me laten más las Regexp(import re)
Título: Re:[codigo + introduccion]manejo de archivos csv en python
Publicado por: pab mac en Abril 01, 2012, 05:43:38 PM
Hola, mira encontre esto: http://docs.python.org/library/csv.html#csv.writer 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.