From jcaballero.hep en gmail.com Wed Jun 1 01:56:56 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Tue, 31 May 2011 19:56:56 -0400 Subject: [Python-es] clases singleton, herededas de thread, que se instancian a su vez desde otros hilos... Message-ID: Hola, tengo que implementar un código algo complicado (para mi nivel), y necesito de la ayuda de la lista. He buscado bastante en google sobre clases Singleton, y me he encontrado con el problema de que he obtenido demasiada información, y mucha de ella contradictoria. Intentaré explicar el problema. Para simplicarlo, 1. voy a necesitar crear 3 clases (a las que llamaré C1, C2 y C3), la primera de ellas "abstracta" de la que se heredaran N clases hijas (a las que llamaré H1, ... Hn) 2. Tanto las N clases hijas como la clase C2 deben ser 'Singleton'. 3. Todas las clases a su vez serán 'threads'. Es decir, todas ellas heredarán de threading.Thread 4. Los objectos de las clases H1...Hn y C2 se instanciarán desde los objetos de la clase C3. Vendría a ser algo como lo siguiente (quitando todo el código no relevante): ------------------------------------------------------------------------------------------------------------------ class C1(threading.Thread): """esta clase debe ser singleton, o bien sus clases hijas deben serlo. """ # bla bla class H1(C1): """esta clase debe ser singleton, de alguna forma """ # bla bla ... class Hn(C1): """esta clase debe ser singleton """ # bla bla ------------------------------------------------------------------------------------------------------------------ class C2(threading.Thread): """esta clase debe ser singleton, de alguna forma """ def __init__ .... bla bla def run(self) .... bla bla # bla bla ------------------------------------------------------------------------------------------------------------------ class C3(threading.Thread): def __init__ ... bla bla def run(self): obj_H1 = H1() obj_H1.start() ... obj_Hn = Hn() obj_Hn.start() obj_C2 = C2() obj_C2.start() # bla bla # bla bla obj_C3_1 = C3() obj_C3_1.start() ... obj_C3_j = C3() obj_C3_j.start() ------------------------------------------------------------------------------------------------------------------ Aquí me surgen varias dudas, que esperon me ayuden a despejar. A. ¿Es necesario que C1 sea 'singleton', o solo deberían serlo H1...Hn? ¿O da igual? B. ¿Es mejor que C1 herede de threading.Threading o sería mejor que lo hagan H1...Hn? ¿O da igual? C. El hecho de que los objetos de C2 y de H1...Hn se instancien desde objetos que son a su vez hilos, ¿puede hacer que las clases C2 y H1...Hn dejen de ser realmente 'singletons'? ¿Hay alguna forma de implementar los 'singleton' para que sean resistentes al hecho de que sus objetos se instanciarán desde hilos? D. ¿Cuál es la forma más sencilla de implementar los 'singleton' en python? He visto mil y una soluciones en google, lo que me hace pensar que no existe una forma verdadera. Me conformo con la más sencilla... ;) Muchas gracias por adelantado por toda la ayuda que me puedan dar. Saludos, Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Wed Jun 1 11:49:22 2011 From: listas en soft-com.es (Oswaldo) Date: Wed, 01 Jun 2011 11:49:22 +0200 Subject: [Python-es] clases singleton, herededas de thread, que se instancian a su vez desde otros hilos... In-Reply-To: References: Message-ID: <4DE60B22.3000209@soft-com.es> El 01/06/2011 1:56, Jose Caballero escribió: > Hola, > > D. ¿Cuál es la forma más sencilla de implementar los 'singleton' en > python? He visto mil y una soluciones en google, lo que me hace pensar > que no existe una forma verdadera. Me conformo con la más sencilla... ;) > Hay multiples formas de implementarlo, personalmente utilizo la implementacion singleton como metaclase: class Singleton(type): # http://es.wikipedia.org/wiki/Singleton#Python def __init__(cls, name, bases, dct): cls.__instance = None type.__init__(cls, name, bases, dct) def __call__(cls, *args, **kw): if cls.__instance is None: cls.__instance = type.__call__(cls, *args,**kw) return cls.__instance class miclasesingleton(object): __metaclass__ = Singleton def __init__(..... > A. ¿Es necesario que C1 sea 'singleton', o solo deberían serlo H1...Hn? > ¿O da igual? > B. ¿Es mejor que C1 herede de threading.Threading o sería mejor que lo > hagan H1...Hn? ¿O da igual? Por simplicidad: class C1(treading.Thread): __metaclass__ = Singleton Todas las clases derivadas de C1 son Threads y singleton > C. El hecho de que los objetos de C2 y de H1...Hn se instancien desde > objetos que son a su vez hilos, ¿puede hacer que las clases C2 y H1...Hn dejen de ser realmente 'singletons'? No > class C3(threading.Thread): > def __init__ ... bla bla > def run(self): > obj_H1 = H1() > obj_H1.start() > ... > obj_Hn = Hn() > obj_Hn.start() > > obj_C2 = C2() > obj_C2.start() > # bla bla > # bla bla > > obj_C3_1 = C3() > obj_C3_1.start() > ... > obj_C3_j = C3() > obj_C3_j.start() Aqui tienes un problema: Cuando realices: obj_C3_1 = C3() obj_C3_1.start() se crearan las instancias iniciales de las clases H1..Hn (singletons) Cuando a continuación realices: obj_C3_j = C3() obj_C3_j.start() En metodo run() intentrá crear nuevas instancias de H1..Hn, pero como son singletons utilizará las mismas que ya creastes y activastes en obj_C3_1 y dará error. Esta todo un poco lioso, haz pruebas con objetos simples. Saludos, -- Oswaldo Hernández From juanrodriguezmonti en gmail.com Wed Jun 1 14:03:11 2011 From: juanrodriguezmonti en gmail.com (=?ISO-8859-1?Q?Juan_Rodr=EDguez_Monti?=) Date: Wed, 1 Jun 2011 09:03:11 -0300 Subject: [Python-es] =?iso-8859-1?q?Anuncio_-_Llamado_a_Charlas_para_PyCon?= =?iso-8859-1?q?Ar_2011_=5BJun=EDn=2C_Buenos_Aires=2C_Argentina=5D?= Message-ID: = Call for Charlas PyConAr 2011 = = Call For Charlas (CFCh) = PyCon Argentina 2011 ? http://ar.pycon.org/2011 Tercera Conferencia Argentina de Python 23 y 24 de Septiembre de 2011 Universidad Nacional del Noroeste de la Provincia de Buenos Aires - UNNOBA Junín ( Buenos Aires ) -- Se agradece la difusión -- PyAr, el Grupo de Usuarios de Python de Argentina invita a toda la comunidad de usuarios de Python y del Software Libre en general a proponer presentaciones y charlas para la Tercera Conferencia Argentina de Python que se realizará los días 23 y 24 de Septiembre de 2011, en la Universidad Nacional del Noroeste de la Provincia de Buenos Aires - UNNOBA, en la ciudad de Junín ( Buenos Aires). En este evento nos juntaremos desarrolladores y programadores tanto principiantes como avanzados; bloggers, autores y diseñadores web; gerentes, administradores y emprendedores; científicos, ingenieros, curiosos y todo aquel que tenga ganas de acercarse a la comunidad Python en Argentina. El autor de cada charla seleccionada participará presencialmente, como orador en el evento. En los casos en que la charla sea realizada por varios autores, se permitirá un máximo de 3 oradores. Aclaración: Por cuestiones presupuestarias, sólo se podrán financiar los pasajes y gastos, de forma total o parcial, de algunos pocos autores seleccionados. Por favor aclarar junto a la propuesta de charla si se solicita ayuda económica. Agradecemos la contribución de todos en la difusión de este llamado y del evento en si. *Dónde enviar las Charlas* Las charlas deben ser ingresadas, previa registración en el sitio, para su aprobación en : http://ar.pycon.org/2011/conference/proposals/submit/ La fecha límite de envío de charlas es el Viernes 1 de Julio de 2011 inclusive. En caso de que necesiten hacer consultas o plantear inconvenientes, por favor contactarse a: *pyconar2011 gmail.com* o a nuestra lista de correo https://listas.usla.org.ar/cgi-bin/mailman/listinfo/pyconar2011 *Cómo enviar las Charlas* El envío de la propuesta de charla debe tener los siguientes datos: - Título - Autor(es): Nombre y apellido, breve descripción de cada uno, foto, asociación, grupo de usuarios, y organismo o empresa a la que pertenece, si corresponde. - Tiempo estimado de duración: Las charlas generalmente deberán ser de 40'. En caso de que sea mayor o menor el tiempo requerido solicitamos su justificación. Indicamos como tiempo de charla 45' en la página ya que vamos a considerar 5 minutos como máximo para hacer el cambio de disertante y tareas de logística. Entonces, cada charla durará 40 minutos con los 5 minutos que usaremos para logística. - Descripción de la charla: Uno o dos párrafos donde se explique el contenido de la presentación. - Nivel objetivo de la charla: Introductorio / Intermedio / Avanzado. - Tipo de publico: Desarrolladores avanzados, desarrolladores principiantes, empresarios, docentes, público en general. - Conocimientos previos: Especificar que conocimientos previos deberán tener los asistentes. - Track: stdlib, web, mobile, cloud, desktop. - Tags: Académico, Caso de Estudio, Ciencia, Cli, Comunidad, Core, Educación, Fomento, GUI, Herramientas, Juegos, Lenguaje, Móviles, Py3k, Redes, Seguridad, Testing, Web. - Teléfono del/los autor/es: Para poder comunicarnos. - Ciudad de residencia del/los autor/es. *Qué formato deben tener las Presentaciones* El envío de las diapositivas y/o presentaciones debe tener alguno de los siguientes formatos: - Openoffice.org presentation - HTML standard - Postscript o PDF - Texto plano *Licencia* Debe especificarse una licencia *que permita* que PyAr distribuya el material de la charla y la charla en sí en un CD y en el sitio web de PyAr. Todas las charlas del evento van a ser filmadas. Se recomienda Creative Commons o similares. Para más información : http://ar.pycon.org/2011. -- Juan Rodríguez Monti PyAr LugJu From jcaballero.hep en gmail.com Wed Jun 1 20:32:26 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Wed, 1 Jun 2011 14:32:26 -0400 Subject: [Python-es] clases singleton, herededas de thread, que se instancian a su vez desde otros hilos... In-Reply-To: <4DE60B22.3000209@soft-com.es> References: <4DE60B22.3000209@soft-com.es> Message-ID: > > Aqui tienes un problema: > > Cuando realices: > > obj_C3_1 = C3() > obj_C3_1.start() > > se crearan las instancias iniciales de las clases H1..Hn (singletons) > > Cuando a continuación realices: > > obj_C3_j = C3() > obj_C3_j.start() > > En metodo run() intentrá crear nuevas instancias de H1..Hn, pero como son > singletons utilizará las mismas que ya creastes y activastes en obj_C3_1 y > dará error. > Creo que eso lo puedo arreglar sobreescribiendo el metodo start(). Algo como... class C2(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.__started = False def start(self): if not self.__started: threading.Thread.start(self) self.__started = True ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From oscar.carballal en gmail.com Wed Jun 1 22:04:12 2011 From: oscar.carballal en gmail.com (Oscar Carballal) Date: Wed, 1 Jun 2011 22:04:12 +0200 Subject: [Python-es] PDF django 1.3 Message-ID: Acabo de añadir en la wiki un PDF recien generado con toda la documentación de django 1.3 por si alguien lo quiere. http://python-hispano.org/LibrosReferencia From kikocorreoso en gmail.com Wed Jun 1 22:17:35 2011 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 1 Jun 2011 22:17:35 +0200 Subject: [Python-es] PDF django 1.3 In-Reply-To: References: Message-ID: 2011/6/1 Oscar Carballal > Acabo de añadir en la wiki un PDF recien generado con toda la > documentación de django 1.3 por si alguien lo quiere. > > http://python-hispano.org/LibrosReferencia Muchas gracias. Este es uno de mis propositos para el verano ;-D ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maengora en gmail.com Wed Jun 1 22:19:52 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 1 Jun 2011 15:19:52 -0500 Subject: [Python-es] respuesta consulta python y sqlite Message-ID: Saludos. Se me presenta un situación en la empresa para la que trabajo que quiero solucionar con un script de Python acompañado de SQLite. El asunto es que no tengo mucha experiencia con SQLite y al querer hacer un count de una tabla me arroja el resultado con el siguiente formato: El fragmento de codigo que me genera el resultado es este: c.execute('SELECT * FROM tabla') for row in c: print row Alguien me puede indicar como ver ese resultado en formato decimal?? La misma consulta la hago en el editor de sqlite (plugin de Mozilla) y me arroja el dato en el formato deseado; también me di una pasada por San Google pero no logro hallar documentación al respecto. A todos muchas gracias -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From carlos.herrerapolo en gmail.com Wed Jun 1 22:25:59 2011 From: carlos.herrerapolo en gmail.com (Carlos Herrera Polo) Date: Wed, 1 Jun 2011 15:25:59 -0500 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: Message-ID: Si ejecutas dentro del for Print type(c) Que tipo de dato regresa ? El 01/06/11, Manuel Enrique González Ramírez escribió: > Saludos. > > Se me presenta un situación en la empresa para la que trabajo que quiero > solucionar con un script de Python acompañado de SQLite. El asunto es que > no tengo mucha experiencia con SQLite y al querer hacer un count de una > tabla me arroja el resultado con el siguiente formato: > > > > El fragmento de codigo que me genera el resultado es este: > > c.execute('SELECT * FROM tabla') > > for row in c: > print row > > Alguien me puede indicar como ver ese resultado en formato decimal?? > > La misma consulta la hago en el editor de sqlite (plugin de Mozilla) y me > arroja el dato en el formato deseado; también me di una pasada por San > Google pero no logro hallar documentación al respecto. > > > A todos muchas gracias > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > -- Enviado desde mi dispositivo móvil From carlos.herrerapolo en gmail.com Wed Jun 1 22:26:21 2011 From: carlos.herrerapolo en gmail.com (Carlos Herrera Polo) Date: Wed, 1 Jun 2011 15:26:21 -0500 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: Message-ID: Perdon quise escribir Print type(row) El 01/06/11, Carlos Herrera Polo escribió: > Si ejecutas dentro del for > > Print type(c) > > Que tipo de dato regresa ? > > > El 01/06/11, Manuel Enrique González Ramírez escribió: >> Saludos. >> >> Se me presenta un situación en la empresa para la que trabajo que quiero >> solucionar con un script de Python acompañado de SQLite. El asunto es >> que >> no tengo mucha experiencia con SQLite y al querer hacer un count de una >> tabla me arroja el resultado con el siguiente formato: >> >> >> >> El fragmento de codigo que me genera el resultado es este: >> >> c.execute('SELECT * FROM tabla') >> >> for row in c: >> print row >> >> Alguien me puede indicar como ver ese resultado en formato decimal?? >> >> La misma consulta la hago en el editor de sqlite (plugin de Mozilla) y me >> arroja el dato en el formato deseado; también me di una pasada por San >> Google pero no logro hallar documentación al respecto. >> >> >> A todos muchas gracias >> >> -- >> Manuel Enrique González Ramírez >> http://maengora.blogspot.com >> > > -- > Enviado desde mi dispositivo móvil > -- Enviado desde mi dispositivo móvil From kikocorreoso en gmail.com Wed Jun 1 22:35:10 2011 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 1 Jun 2011 22:35:10 +0200 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: Message-ID: El 1 de junio de 2011 22:19, Manuel Enrique González Ramírez < maengora en gmail.com> escribió: > Saludos. > > Se me presenta un situación en la empresa para la que trabajo que quiero > solucionar con un script de Python acompañado de SQLite. El asunto es que > no tengo mucha experiencia con SQLite y al querer hacer un count de una > tabla me arroja el resultado con el siguiente formato: > > > > El fragmento de codigo que me genera el resultado es este: > > c.execute('SELECT * FROM tabla') > > for row in c: > print row > > Prueba esto: for row in c.execute('SELECT * FROM tabla'): print row ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From enxebree en gmail.com Wed Jun 1 23:22:46 2011 From: enxebree en gmail.com (joe di castro) Date: Wed, 01 Jun 2011 23:22:46 +0200 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: Message-ID: <1306963366.3924.3.camel@enxebuntu> Es que eso solo ejecuta el SQL sobre el cursor, pero no devuelve los resultados, para eso haz lo siguiente: c.execute('SELECT * FROM tabla') rows = c.fetchall() ## Para recoger todos los resultados for row in rows: print(row) Y ya verías los resultados. Si quisieras recoger resultados individualmente, emplea fetchone() Saludos Joe El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez escribió: > Saludos. > > > Se me presenta un situación en la empresa para la que trabajo que > quiero solucionar con un script de Python acompañado de SQLite. El > asunto es que no tengo mucha experiencia con SQLite y al querer hacer > un count de una tabla me arroja el resultado con el siguiente formato: > > > > > > El fragmento de codigo que me genera el resultado es este: > > > c.execute('SELECT * FROM tabla') > > > for row in c: > print row > > > Alguien me puede indicar como ver ese resultado en formato decimal?? > > > La misma consulta la hago en el editor de sqlite (plugin de Mozilla) y > me arroja el dato en el formato deseado; también me di una pasada por > San Google pero no logro hallar documentación al respecto. > > > > > A todos muchas gracias > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ From enxebree en gmail.com Wed Jun 1 23:25:10 2011 From: enxebree en gmail.com (joe di castro) Date: Wed, 01 Jun 2011 23:25:10 +0200 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: Message-ID: <1306963510.3924.5.camel@enxebuntu> Por cierto la documentación que necesites sobre SQLite y sqlite3 la tienes aquí: http://docs.python.org/library/sqlite3.html#module-sqlite3 http://www.sqlite.org/ Saludos Joe El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez escribió: > Saludos. > > > Se me presenta un situación en la empresa para la que trabajo que > quiero solucionar con un script de Python acompañado de SQLite. El > asunto es que no tengo mucha experiencia con SQLite y al querer hacer > un count de una tabla me arroja el resultado con el siguiente formato: > > > > > > El fragmento de codigo que me genera el resultado es este: > > > c.execute('SELECT * FROM tabla') > > > for row in c: > print row > > > Alguien me puede indicar como ver ese resultado en formato decimal?? > > > La misma consulta la hago en el editor de sqlite (plugin de Mozilla) y > me arroja el dato en el formato deseado; también me di una pasada por > San Google pero no logro hallar documentación al respecto. > > > > > A todos muchas gracias > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ From maengora en gmail.com Wed Jun 1 23:38:38 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 1 Jun 2011 16:38:38 -0500 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: <1306963510.3924.5.camel@enxebuntu> References: <1306963510.3924.5.camel@enxebuntu> Message-ID: Perdón a todos, De los afanes me comí unas líneas de código (justos las del problema): # Consultemos los datos c.execute('SELECT * FROM tabla') for row in c: print row c.execute('select count(secuencia) from tabla') print 'Total transacciones: ',c El 1 de junio de 2011 16:25, joe di castro escribió: > Por cierto la documentación que necesites sobre SQLite y sqlite3 la > tienes aquí: > > http://docs.python.org/library/sqlite3.html#module-sqlite3 > http://www.sqlite.org/ > > Saludos > Joe > > El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez > escribió: > > Saludos. > > > > > > Se me presenta un situación en la empresa para la que trabajo que > > quiero solucionar con un script de Python acompañado de SQLite. El > > asunto es que no tengo mucha experiencia con SQLite y al querer hacer > > un count de una tabla me arroja el resultado con el siguiente formato: > > > > > > > > > > > > El fragmento de codigo que me genera el resultado es este: > > > > > > c.execute('SELECT * FROM tabla') > > > > > > for row in c: > > print row > > > > > > Alguien me puede indicar como ver ese resultado en formato decimal?? > > > > > > La misma consulta la hago en el editor de sqlite (plugin de Mozilla) y > > me arroja el dato en el formato deseado; también me di una pasada por > > San Google pero no logro hallar documentación al respecto. > > > > > > > > > > A todos muchas gracias > > > > -- > > Manuel Enrique González Ramírez > > http://maengora.blogspot.com > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From edinson.padron23 en gmail.com Wed Jun 1 23:40:19 2011 From: edinson.padron23 en gmail.com (Edinson Padron) Date: Wed, 01 Jun 2011 17:10:19 -0430 Subject: [Python-es] PDF django 1.3 In-Reply-To: References: Message-ID: <4DE6B1C3.60500@gmail.com> > Acabo de añadir en la wiki un PDF recien generado con toda la > documentación de django 1.3 por si alguien lo quiere. > > http://python-hispano.org/LibrosReferencia > Muchas gracias oscar!!! :D From subtitular en gmail.com Wed Jun 1 23:41:35 2011 From: subtitular en gmail.com (=?ISO-8859-1?Q?Oscar_Alberto_Pe=F1a_C=E9spedes?=) Date: Wed, 1 Jun 2011 16:41:35 -0500 Subject: [Python-es] PDF django 1.3 In-Reply-To: <4DE6B1C3.60500@gmail.com> References: <4DE6B1C3.60500@gmail.com> Message-ID: Muchas Gracias!!! Oscar A. Peña C. Observador del mundo www.logiox.com El 1 de junio de 2011 16:40, Edinson Padron escribió: > > Acabo de añadir en la wiki un PDF recien generado con toda la >> documentación de django 1.3 por si alguien lo quiere. >> >> http://python-hispano.org/LibrosReferencia >> >> > Muchas gracias oscar!!! :D > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From enxebree en gmail.com Wed Jun 1 23:48:25 2011 From: enxebree en gmail.com (joe di castro) Date: Wed, 01 Jun 2011 23:48:25 +0200 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: <1306963510.3924.5.camel@enxebuntu> Message-ID: <1306964905.3924.12.camel@enxebuntu> El problema es el mismo, estas intentando imprimir directamente el objeto cursor, por eso te aparece ese resultado: Necesitas recoger los datos en una variable, bien empleado el metodo fetchall() para recoger todos los resultados o bien fetchone() para ir recogiendo uno a uno. Bueno, la verdad es que puedes emplear el cursor como un iterable, por eso te deja hacer: for row in c: print row pero cuando intentas hacer hacer el último print, no lo iteras, por lo tanto te muestra el objeto. Yo por eso te recomiendo emplear fetchone() y fetchall() siempre y así te evitas estos problemas. Saludos Joe El mié, 01-06-2011 a las 16:38 -0500, Manuel Enrique González Ramírez escribió: > Perdón a todos, > > > De los afanes me comí unas líneas de código (justos las del problema): > > > # Consultemos los datos > c.execute('SELECT * FROM tabla') > > > for row in c: > print row > > > c.execute('select count(secuencia) from tabla') > print 'Total transacciones: ',c > > > > > > El 1 de junio de 2011 16:25, joe di castro > escribió: > Por cierto la documentación que necesites sobre SQLite y > sqlite3 la > tienes aquí: > > http://docs.python.org/library/sqlite3.html#module-sqlite3 > http://www.sqlite.org/ > > Saludos > Joe > > El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González > Ramírez > escribió: > > > > Saludos. > > > > > > Se me presenta un situación en la empresa para la que > trabajo que > > quiero solucionar con un script de Python acompañado de > SQLite. El > > asunto es que no tengo mucha experiencia con SQLite y al > querer hacer > > un count de una tabla me arroja el resultado con el > siguiente formato: > > > > > > > > > > > > El fragmento de codigo que me genera el resultado es este: > > > > > > c.execute('SELECT * FROM tabla') > > > > > > for row in c: > > print row > > > > > > Alguien me puede indicar como ver ese resultado en formato > decimal?? > > > > > > La misma consulta la hago en el editor de sqlite (plugin de > Mozilla) y > > me arroja el dato en el formato deseado; también me di una > pasada por > > San Google pero no logro hallar documentación al respecto. > > > > > > > > > > A todos muchas gracias > > > > -- > > Manuel Enrique González Ramírez > > http://maengora.blogspot.com > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ From gerardojuarez en buyteknet.info Thu Jun 2 00:02:57 2011 From: gerardojuarez en buyteknet.info (gerardo Juarez) Date: Wed, 01 Jun 2011 17:02:57 -0500 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: <1306963510.3924.5.camel@enxebuntu> Message-ID: <4DE6B711.2010507@buyteknet.info> Manuel, Ve lo que dice Joe. No he usado nunca SQLite, pero supongo que sigue la DB-API 2.0 de Python. Si ese es el caso, 'c' en tu código es un cursor y por lo tanto, como dice Joe, c.execute() ejecuta nada más el *query* . Luego tienes que obtener los datos con c.fetchall() o c.fetchone(). En el caso que pones en el que obtienes un sólo número, pasa como en este ejemplo: cur = db.cursor() cur.execute('select count(*) from articulos') # cuantos registros hay en esta tabla row = cur.fetchone() print row[0] # imprime cuantos registros obtuvo Esto es, aún siendo count(*) lo que quieres, te va a regresar un arreglo (o lista), por lo que lo recibes como tal y el número es el primer y único elemento de la lista (o arreglo). Lo que estás imprimiendo es el cursor mismo, por eso lo transforma a una representación imprimible y obtienes: Saludos Gerardo Manuel Enrique González Ramírez wrote: > Perdón a todos, > > De los afanes me comí unas líneas de código (justos las del problema): > > # Consultemos los datos > c.execute('SELECT * FROM tabla') > > for row in c: > print row > > c.execute('select count(secuencia) from tabla') > print 'Total transacciones: ',c > > > > El 1 de junio de 2011 16:25, joe di castro > escribió: > > Por cierto la documentación que necesites sobre SQLite y sqlite3 la > tienes aquí: > > http://docs.python.org/library/sqlite3.html#module-sqlite3 > http://www.sqlite.org/ > > Saludos > Joe > > El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez > escribió: > > Saludos. > > > > > > Se me presenta un situación en la empresa para la que trabajo que > > quiero solucionar con un script de Python acompañado de SQLite. El > > asunto es que no tengo mucha experiencia con SQLite y al querer > hacer > > un count de una tabla me arroja el resultado con el siguiente > formato: > > > > > > > > > > > > El fragmento de codigo que me genera el resultado es este: > > > > > > c.execute('SELECT * FROM tabla') > > > > > > for row in c: > > print row > > > > > > Alguien me puede indicar como ver ese resultado en formato decimal?? > > > > > > La misma consulta la hago en el editor de sqlite (plugin de > Mozilla) y > > me arroja el dato en el formato deseado; también me di una > pasada por > > San Google pero no logro hallar documentación al respecto. > > > > > > > > > > A todos muchas gracias > > > > -- > > Manuel Enrique González Ramírez > > http://maengora.blogspot.com > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > ------------------------------------------------------------------------ > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > From maengora en gmail.com Thu Jun 2 00:04:08 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 1 Jun 2011 17:04:08 -0500 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: <1306964905.3924.12.camel@enxebuntu> References: <1306963510.3924.5.camel@enxebuntu> <1306964905.3924.12.camel@enxebuntu> Message-ID: El 1 de junio de 2011 16:48, joe di castro escribió: > El problema es el mismo, estas intentando imprimir directamente el > objeto cursor, por eso te aparece ese resultado: > > > > Necesitas recoger los datos en una variable, bien empleado el metodo > fetchall() para recoger todos los resultados o bien fetchone() para ir > recogiendo uno a uno. Bueno, la verdad es que puedes emplear el cursor > como un iterable, por eso te deja hacer: > > for row in c: > print row > > pero cuando intentas hacer hacer el último print, no lo iteras, por lo > tanto te muestra el objeto. > > Yo por eso te recomiendo emplear fetchone() y fetchall() siempre y así > te evitas estos problemas. > > Saludos > Joe > > Excelente!! ya me funciono. A todos muuchas gracias por su tiempo y colaboración > > El mié, 01-06-2011 a las 16:38 -0500, Manuel Enrique González Ramírez > escribió: > > Perdón a todos, > > > > > > De los afanes me comí unas líneas de código (justos las del problema): > > > > > > # Consultemos los datos > > c.execute('SELECT * FROM tabla') > > > > > > for row in c: > > print row > > > > > > c.execute('select count(secuencia) from tabla') > > print 'Total transacciones: ',c > > > > > > > > > > > > El 1 de junio de 2011 16:25, joe di castro > > escribió: > > Por cierto la documentación que necesites sobre SQLite y > > sqlite3 la > > tienes aquí: > > > > http://docs.python.org/library/sqlite3.html#module-sqlite3 > > http://www.sqlite.org/ > > > > Saludos > > Joe > > > > El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González > > Ramírez > > escribió: > > > > > > > Saludos. > > > > > > > > > Se me presenta un situación en la empresa para la que > > trabajo que > > > quiero solucionar con un script de Python acompañado de > > SQLite. El > > > asunto es que no tengo mucha experiencia con SQLite y al > > querer hacer > > > un count de una tabla me arroja el resultado con el > > siguiente formato: > > > > > > > > > > > > > > > > > > El fragmento de codigo que me genera el resultado es este: > > > > > > > > > c.execute('SELECT * FROM tabla') > > > > > > > > > for row in c: > > > print row > > > > > > > > > Alguien me puede indicar como ver ese resultado en formato > > decimal?? > > > > > > > > > La misma consulta la hago en el editor de sqlite (plugin de > > Mozilla) y > > > me arroja el dato en el formato deseado; también me di una > > pasada por > > > San Google pero no logro hallar documentación al respecto. > > > > > > > > > > > > > > > A todos muchas gracias > > > > > > -- > > > Manuel Enrique González Ramírez > > > http://maengora.blogspot.com > > > > > > > > > > _______________________________________________ > > > Python-es mailing list > > > Python-es en python.org > > > http://mail.python.org/mailman/listinfo/python-es > > > FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > > > -- > > Manuel Enrique González Ramírez > > http://maengora.blogspot.com > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maengora en gmail.com Thu Jun 2 03:54:03 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 1 Jun 2011 20:54:03 -0500 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: <4DE6B711.2010507@buyteknet.info> References: <1306963510.3924.5.camel@enxebuntu> <4DE6B711.2010507@buyteknet.info> Message-ID: Hola Jose, Gracias por tu consejo, ya el asunto estuvo solucionado con precisamente las instrucciones de Joe El 1 de junio de 2011 17:02, gerardo Juarez escribió: > Manuel, > > Ve lo que dice Joe. No he usado nunca SQLite, pero supongo que sigue la > DB-API 2.0 de Python. Si ese es el caso, 'c' en tu > código es un cursor y por lo tanto, como dice Joe, c.execute() ejecuta nada > más el *query* . Luego tienes que obtener los > datos con c.fetchall() o c.fetchone(). En el caso que pones en el que > obtienes un sólo número, pasa como en este ejemplo: > > cur = db.cursor() > cur.execute('select count(*) from articulos') # cuantos registros hay > en esta tabla > row = cur.fetchone() > print row[0] # imprime cuantos registros obtuvo > > Esto es, aún siendo count(*) lo que quieres, te va a regresar un arreglo (o > lista), por lo que lo recibes como tal y el número es > el primer y único elemento de la lista (o arreglo). > > Lo que estás imprimiendo es el cursor mismo, por eso lo transforma a una > representación imprimible y obtienes: > > > > Saludos > Gerardo > > > > > Manuel Enrique González Ramírez wrote: > >> Perdón a todos, >> >> De los afanes me comí unas líneas de código (justos las del problema): >> >> # Consultemos los datos >> c.execute('SELECT * FROM tabla') >> >> for row in c: >> print row >> >> c.execute('select count(secuencia) from tabla') >> print 'Total transacciones: ',c >> >> >> >> El 1 de junio de 2011 16:25, joe di castro > enxebree en gmail.com>> escribió: >> >> >> Por cierto la documentación que necesites sobre SQLite y sqlite3 la >> tienes aquí: >> >> http://docs.python.org/library/sqlite3.html#module-sqlite3 >> http://www.sqlite.org/ >> >> Saludos >> Joe >> >> El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez >> escribió: >> > Saludos. >> > >> > >> > Se me presenta un situación en la empresa para la que trabajo que >> > quiero solucionar con un script de Python acompañado de SQLite. El >> > asunto es que no tengo mucha experiencia con SQLite y al querer >> hacer >> > un count de una tabla me arroja el resultado con el siguiente >> formato: >> > >> > >> > >> > >> > >> > El fragmento de codigo que me genera el resultado es este: >> > >> > >> > c.execute('SELECT * FROM tabla') >> > >> > >> > for row in c: >> > print row >> > >> > >> > Alguien me puede indicar como ver ese resultado en formato decimal?? >> > >> > >> > La misma consulta la hago en el editor de sqlite (plugin de >> Mozilla) y >> > me arroja el dato en el formato deseado; también me di una >> pasada por >> > San Google pero no logro hallar documentación al respecto. >> > >> > >> > >> > >> > A todos muchas gracias >> > >> > -- >> > Manuel Enrique González Ramírez >> > http://maengora.blogspot.com >> > >> > _______________________________________________ >> > Python-es mailing list >> > Python-es en python.org >> >> > http://mail.python.org/mailman/listinfo/python-es >> > FAQ: http://python-es-faq.wikidot.com/ >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> >> >> -- >> Manuel Enrique González Ramírez >> http://maengora.blogspot.com >> ------------------------------------------------------------------------ >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From julio.sg en mundo-r.com Thu Jun 2 07:08:43 2011 From: julio.sg en mundo-r.com (JulioSG) Date: Thu, 02 Jun 2011 07:08:43 +0200 Subject: [Python-es] PDF django 1.3 In-Reply-To: References: Message-ID: <4DE71ADB.2060606@mundo-r.com> El 01/06/2011 22:04, Oscar Carballal escribió: > Acabo de añadir en la wiki un PDF recien generado con toda la > documentación de django 1.3 por si alguien lo quiere. > > http://python-hispano.org/LibrosReferencia > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > Excelente documentación. Muchísimas gracias Oscar. From dougjim en gmail.com Thu Jun 2 13:55:08 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Thu, 2 Jun 2011 07:25:08 -0430 Subject: [Python-es] =?iso-8859-1?q?Funciones_matem=E1ticas?= Message-ID: ¡Hola! ¿Dónde puedo conseguir la lista completa de las funciones matemáticas incorporadas en el módulo math? Gracias. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Thu Jun 2 13:58:55 2011 From: kikocorreoso en gmail.com (Kiko) Date: Thu, 2 Jun 2011 13:58:55 +0200 Subject: [Python-es] =?iso-8859-1?q?Funciones_matem=E1ticas?= In-Reply-To: References: Message-ID: El 2 de junio de 2011 13:55, Douglas Jiménez escribió: > ¡Hola! > > ¿Dónde puedo conseguir la lista completa de las funciones matemáticas > incorporadas en el módulo math? > > Gracias. > > >>> import math >>> help(math) > Douglas. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jjgomera en gmail.com Thu Jun 2 14:01:26 2011 From: jjgomera en gmail.com (=?ISO-8859-1?Q?Juan_Jos=E9_G=F3mez_Romera?=) Date: Thu, 2 Jun 2011 14:01:26 +0200 Subject: [Python-es] =?iso-8859-1?q?Funciones_matem=E1ticas?= In-Reply-To: References: Message-ID: http://docs.python.org/library/math.html ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Thu Jun 2 14:06:08 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Thu, 2 Jun 2011 07:36:08 -0430 Subject: [Python-es] =?iso-8859-1?q?Funciones_matem=E1ticas?= In-Reply-To: References: Message-ID: > ¡Gracias a Kiko y a Juan José. > Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pau.cervera en gmail.com Thu Jun 2 18:21:25 2011 From: pau.cervera en gmail.com (Pau Cervera) Date: Thu, 2 Jun 2011 18:21:25 +0200 Subject: [Python-es] [semi-off-topic] virtualenvwrapper en windows 7 Message-ID: Buenas, Por ciertas circunstancias me veo en la obligación de trabajar en Windows 7, y echo de menos el virtualenvwrapper. He encontrado un port para powershell < https://bitbucket.org/guillermooo/virtualenvwrapper-powershell/src>, pero estoy bastante verde en powersell, con lo que pregunto aquí en la lista, por si alguién lo ha usado o conoce alguna alternativa mejor. Es decir: hay alguien usando virtualenv y (mejor aún) virtualenvwrapper en windows 7. Supongo que otra alternativa es cygwin. En todo caso, muchas gracias. ----- Pau Python..., what else? ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maengora en gmail.com Thu Jun 2 23:32:20 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Thu, 2 Jun 2011 16:32:20 -0500 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python Message-ID: Hola a tod en s, Tengo la siguiente situación: Un archivo de 29Mb que contiene 281.351 lineas. El archivo tiene la siguiente estructura: 1|2011-05-20 23:08:56|122711527|OPERADOR1|HOST TO HOST|212454|10000|HOST CLIENTE|192630167 2|2011-05-20 23:09:08|122711530|OPERADOR12|HOST TO HOST|57212454|1000|HOST CLIENTE|192630168 3|2011-05-20 23:09:42|122711538|OPERADOR1|HOST TO HOST|454545454545|2000|HOST CLIENTE|192630169 4|2011-05-20 23:10:03|122711544|OPERADOR1|HOST TO HOST|121221211|20000|HOST CLIENTE|192630170 5|2011-05-20 23:10:09|122711547|OPERADOR1|HOST TO HOST ESPECIAL|4545|5000|HOST CLIENTE|192630171 6|2011-05-20 23:10:46|122711554|OPERADOR1|HOST TO HOST ESPECIAL|545454445|5000|HOST CLIENTE|192630172 . . Del cual debo capturar la última sección, es decir, el número que me representa una secuencia (192630167, 192630168, etc). Lo hago así: fc = open('archivo.txt','r') for linea in fc: b = linea.rfind('|') posi = b + 1 posf = posi + 9 secuenciac = linea[posi:posf] print secuenciac Esto tarda en promedio 3 minutos (que es demasiado comparado con el tiempo que tarda [1min en promedio] con el script que me pasaron en Perl). Ahora, para sumarle al problema del tiempo que tarda dicha proceso, el resultado del ciclo anterior debe escribirse en otro archivo (datos.csv); eso lo hago así: # Abro un archivo para edición fdif = open('datos.csv','a') fdif.writelines('"'+secuenciac+'"; \n') fdif.close() Y esto eleva exponencialmente el tiempo. :( Estuve buscando en San Google y en un hilo anterior (así como en e foro de majibu) obtuve documentación donde se habla de lectura de archivos enormes con python usando un mínimo de tiempo: http://effbot.org/zone/wide-finder.htm def process(file, chunk): f = open(file) f.seek(chunk[0]) d = defaultdict(int) for page in pat.findall(f.read(chunk[1])): d[page] += 1 return Perdón pero no acabo de entender cómo implementar algo que me funcione utilizando el mínimo de tiempo como dicen que sucede por ejemplo con el process anterior. Se que se puede mejorar dichas situaciones pero lo poco que aún se de Python no me deja ser más eficiente (.. y es que mi ignorancia es infinita) Alguien me puede colaborar??? Muchas gracias. -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Thu Jun 2 23:37:15 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Thu, 2 Jun 2011 17:37:15 -0400 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: > > > > fc = open('archivo.txt','r') > > for linea in fc: > b = linea.rfind('|') > posi = b + 1 > posf = posi + 9 > secuenciac = linea[posi:posf] > print secuenciac > > > Has probado fc = open(.....) for linea in fc: secuenciac = linea.split('|')[-1] ? ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Thu Jun 2 23:45:42 2011 From: kikocorreoso en gmail.com (Kiko) Date: Thu, 2 Jun 2011 23:45:42 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: 2011/6/2 Jose Caballero > >> >> fc = open('archivo.txt','r') >> >> for linea in fc: >> b = linea.rfind('|') >> posi = b + 1 >> posf = posi + 9 >> secuenciac = linea[posi:posf] >> print secuenciac >> >> >> > > > Has probado > > fc = open(.....) > for linea in fc: > secuenciac = linea.split('|')[-1] > > Yo abro todos los días ficheros de ese pelo y no me tarda tanto. Prueba lo siguiente y dime a ver si te funciona: ficheroentrada = open('archivo.txt','r') ficherosalida = open('salida.txt','w') for linea in ficheroentrada: ficherosalida.write("" + linea.split('|')[-1] + ";\n") ficheroentrada.close() ficherosalida.close() ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From enxebree en gmail.com Thu Jun 2 23:58:24 2011 From: enxebree en gmail.com (joe di castro) Date: Thu, 02 Jun 2011 23:58:24 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: <1307051904.8666.8.camel@enxebuntu> Mejor aún, kiko: with open("archivo.txt", "r") as entrada: with open("salida.txt", "w") as salida: for linea in entrada: salida.write("" + linea.split('|')[-1] + ";\n") Saludos El jue, 02-06-2011 a las 23:45 +0200, Kiko escribió: > > > 2011/6/2 Jose Caballero > > > > fc = open('archivo.txt','r') > > > for linea in fc: > b = linea.rfind('|') > posi = b + 1 > posf = posi + 9 > secuenciac = linea[posi:posf] > print secuenciac > > > > > > > Has probado > > fc = open(.....) > for linea in fc: > secuenciac = linea.split('|')[-1] > > > > Yo abro todos los días ficheros de ese pelo y no me tarda tanto. > Prueba lo siguiente y dime a ver si te funciona: > > > ficheroentrada = open('archivo.txt','r') > ficherosalida = open('salida.txt','w') > for linea in ficheroentrada: > ficherosalida.write("" + linea.split('|')[-1] + ";\n") > ficheroentrada.close() > ficherosalida.close() > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ From lasizoillo en gmail.com Fri Jun 3 05:07:15 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Fri, 3 Jun 2011 05:07:15 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: El día 2 de junio de 2011 23:32, Manuel Enrique González Ramírez escribió: > Hola a tod en s, > Tengo la siguiente situación: > Un archivo de 29Mb que contiene 281.351 lineas.  El archivo tiene la > siguiente estructura: > 1|2011-05-20 23:08:56|122711527|OPERADOR1|HOST TO HOST|212454|10000|HOST > CLIENTE|192630167 > 2|2011-05-20 23:09:08|122711530|OPERADOR12|HOST TO > HOST|57212454|1000|HOST CLIENTE|192630168 > 3|2011-05-20 23:09:42|122711538|OPERADOR1|HOST TO > HOST|454545454545|2000|HOST CLIENTE|192630169 > 4|2011-05-20 23:10:03|122711544|OPERADOR1|HOST TO > HOST|121221211|20000|HOST CLIENTE|192630170 > 5|2011-05-20 23:10:09|122711547|OPERADOR1|HOST TO HOST > ESPECIAL|4545|5000|HOST CLIENTE|192630171 > 6|2011-05-20 23:10:46|122711554|OPERADOR1|HOST TO HOST > ESPECIAL|545454445|5000|HOST CLIENTE|192630172 > . > . > Del cual debo capturar la última sección, es decir, el número que me > representa una secuencia (192630167, 192630168, etc). > Lo hago así: > fc = open('archivo.txt','r') > for linea in fc: >     b = linea.rfind('|') >     posi = b + 1 >     posf = posi + 9 >     secuenciac = linea[posi:posf] >     print secuenciac Supongo que esto es muy lento y que con el split habrás notado una buena mejoría. Pero todavía se puede hacer mejor, rsplit es lo suyo: In [9]: linea = "1|2011-05-20 23:08:56|122711527|OPERADOR1|HOST TO HOST|212454|10000|HOST CLIENTE|192630167" In [10]: timeit linea.split('|')[-1] 1000000 loops, best of 3: 1.2 us per loop In [11]: timeit linea.rsplit('|',1)[-1] 1000000 loops, best of 3: 695 ns per loop In [12]: linea.rsplit('|',1)[-1] Out[12]: '192630167' Para hacer esos mini-benchmarks tan chulos, se puede hacer facilmente con ipython. Para un profiling mejor busca por san google temas de python profiling e incluso python profiling kcachegrind. Lo suyo para optimizar es poder medir en que estas gastando el tiempo ;-) > Esto tarda en promedio 3 minutos (que es demasiado comparado con el tiempo > que tarda [1min en promedio] con el script que me pasaron en Perl). > Ahora, para sumarle al problema del tiempo que tarda dicha proceso, el > resultado del ciclo anterior debe escribirse en otro archivo (datos.csv); > eso lo hago así: > # Abro un archivo para edición >     fdif = open('datos.csv','a') >     fdif.writelines('"'+secuenciac+'"; \n') >     fdif.close() > Y esto eleva exponencialmente el tiempo.  :( No alcanzo a entender el uso de writelines: http://docs.python.org/library/stdtypes.html#file.writelines Supongo que no abres y cierras el fichero cada vez, pero tengo que preguntarlo, ¿lo haces? Si lo estás haciendo, un profiler gritaría que ese es el primer punto a optimizar. > Estuve buscando en San Google y en un hilo anterior (así como en e foro de > majibu) obtuve documentación donde se habla de lectura de archivos enormes > con python usando un mínimo de tiempo: > http://effbot.org/zone/wide-finder.htm > > def process(file, chunk): > f = open(file) > f.seek(chunk[0]) > d = defaultdict(int) > for page in pat.findall(f.read(chunk[1])): > d[page] += 1 > return > > Perdón pero no acabo de entender cómo implementar algo que me funcione > utilizando el mínimo de tiempo como dicen que sucede por ejemplo con el > process anterior. > Se que se puede mejorar dichas situaciones pero lo poco que aún se de Python > no me deja ser más eficiente (.. y es que mi ignorancia es infinita) > Alguien me puede colaborar??? > Creo que lo mejor es olvidarse un poco de conseguir la solución más eficiente por ahora. Primero juega con python y cuando tengas soltura irás haciendo el código más óptimo de forma fácil. Por ejemplo, la optimización del rsplit no se me hubiera podido ocurrir sin conocer la existencia del rsplit. Para saber por qué va más rápido hay que pensar en la cantidad de objetos a crear/destruir en una y otra solución, aparte de que una requiere un recorrido mayor de la cadena que la otra. Espero que el correo te haya resultado útil. Un saludo: Javi From kikocorreoso en gmail.com Fri Jun 3 12:39:32 2011 From: kikocorreoso en gmail.com (Kiko) Date: Fri, 3 Jun 2011 12:39:32 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: > Supongo que esto es muy lento y que con el split habrás notado una > buena mejoría. Pero todavía se puede hacer mejor, rsplit es lo suyo: > > In [9]: linea = "1|2011-05-20 23:08:56|122711527|OPERADOR1|HOST TO > HOST|212454|10000|HOST CLIENTE|192630167" > > In [10]: timeit linea.split('|')[-1] > 1000000 loops, best of 3: 1.2 us per loop > > In [11]: timeit linea.rsplit('|',1)[-1] > 1000000 loops, best of 3: 695 ns per loop > > In [12]: linea.rsplit('|',1)[-1] > Out[12]: '192630167' > > Para hacer esos mini-benchmarks tan chulos, se puede hacer facilmente > con ipython. > Usando ipython defino tres funciones: def abrekiko(entrada, salida): input = open(entrada, 'r') output = open(salida, 'w') for l in input: output.write(l.split(',')[-1]) input.close() output.close() def abrejoe(entrada,salida): with open(entrada,'r') as input: with open(salida,'w') as output: [output.write(l.split(',')[-1]) for l in input] def abrelasi(entrada,salida): with open(entrada,'r') as input: with open(salida,'w') as output: [output.write(l.rsplit(',',1)[-1]) for l in input] Los resultados que me salen son: In [15]: timeit abrekiko(entrada,salida) 1 loops, best of 3: 735 ms per loop In [16]: timeit abrejoe(entrada,salida) 1 loops, best of 3: 766 ms per loop In [17]: timeit abrelasi(entrada,salida) 1 loops, best of 3: 563 ms per loop Mi entrada es un fichero con 300.000 líneas y 8 columnas separadas por coma. Claramente, rsplit parece que funciona mejor. He hecho mi función (abrekiko) con una list comprehesion y también va un poquito más lenta que con el for a pelo y tenía entendido que usar list comprehensions era más efectivo. ¿La diferencia de rsplit con respecto a split es solo que empieza el split por la derecha? ¿Alguien tiene formas más rápidas de lectura de ficheros de texto? ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lasizoillo en gmail.com Fri Jun 3 13:37:21 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Fri, 3 Jun 2011 13:37:21 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: El día 3 de junio de 2011 12:39, Kiko escribió: > Usando ipython defino tres funciones: > > def abrekiko(entrada, salida): >     input = open(entrada, 'r') >     output = open(salida, 'w') >     for l in input: >         output.write(l.split(',')[-1]) >     input.close() >     output.close() > > def abrejoe(entrada,salida): >     with open(entrada,'r') as input: >         with open(salida,'w') as output: >             [output.write(l.split(',')[-1]) for l in input] > > def abrelasi(entrada,salida): >     with open(entrada,'r') as input: >         with open(salida,'w') as output: >             [output.write(l.rsplit(',',1)[-1]) for l in input] > > Los resultados que me salen son: > In [15]: timeit abrekiko(entrada,salida) > 1 loops, best of 3: 735 ms per loop > > In [16]: timeit abrejoe(entrada,salida) > 1 loops, best of 3: 766 ms per loop > > In [17]: timeit abrelasi(entrada,salida) > 1 loops, best of 3: 563 ms per loop > > Mi entrada es un fichero con 300.000 líneas y 8 columnas separadas por coma. > > Claramente, rsplit parece que funciona mejor. He hecho mi función (abrekiko) > con una list comprehesion y también va un poquito más lenta que con el for a > pelo y tenía entendido que usar list comprehensions era más efectivo. > list comprehensions genera una lista con todos los datos de la iteración, lo cual no es muy bueno para el uso de la memoria. Usando generadores (como list comprehensions pero usando parentesis en vez de corchetes) se consume menos memoría, lo cual también es bueno. Respecto a lo de que vaya un poquito más rápido o un poquito más lento puede ser por temas varios. Si ejecutas el test dos veces verás que hay cierta desviación, por lo que pequeñas mejoras no son representativas. > ¿La diferencia de rsplit con respecto a split es solo que empieza el split > por la derecha? > Si, esa es la única diferencia. Pero el truquito en cuestión está en el segundo parámetro. Ese 1 le indica que pare al cortar un elemento. En este caso concreto solo queremos el último, por lo que no tiene demasiado sentido seguir buscando en la cadena y troceando el resto de los campos. Aparte del recorrido en la cadena, la creación de esas nuevas cadenas para representar cada uno de los capos no es gratis. > ¿Alguien tiene formas más rápidas de lectura de ficheros de texto? > Respuesta corta: Si, no, a veces. Respuesta larga (me pongo en modo chapas así que dejar de leer si se quiere): Moraleja 1: Si el cuello de botella es el acceso a disco poco hay por hacer Un día me puse hacer una guerra de lenguajes implementando un wc (programa para contar lineas) muy simple en c, haskell y python. En C las pasé canutas porque la función readline del estandar C99 no estaba en la librería estandar del OSX, por lo que tuve que hacer una implementación que hiciera uso de buffers. Quedó un código muy largo y me costo cierto tiempo hacerlo. En haskell, quizá por ser un lenguaje que tampoco domino, me quedó un programa corto y eficiente, pero cada caracter del codigo había que pensarlo con cautela. La forma de hacer el plegado de funciones para que la evaluación perezosa no fuese un problema, la forma de que la lectura usará bien buffers, ... todo eso hizo que me costara horrores escribir unas pocas lineas de código. En python el programa era ligeramente más largo que haskell, pero me salió solito y sin pensarlo mucho. Los resultados fueron curiosos. Cuando el fichero no estaba en cache de disco, el cuello de botella era el acceso a este, por lo que los tres códigos tardaban lo mismo en ejecutarse. Estando el fichero en cache (cosa que tampoco sería demasiado normal, supongo) la versión c y haskell eran mucho más rápidas que la versión en python. La diferencia entre c y haskell no era muy grande siendo la primera algo más rápida. Moraleja 2: Depende de la estructura de ese fichero de texto. Si en vez de tener que leer el último campo en el ejemplo de este correo, se hubiera tenido que leer uno de en medio la optimización realizada sería menos evidente. Si el fichero tiene alguna cadena larga fácil de buscar, algoritmos como el de Boyer-Moore[1] pueden ayudar bastante. Si el fichero en vez del tipo csv fuese uno con campos fijos, se podría hacer un mmap y acceder directamente a las zonas de memoria donde estan los datos, evitando un recorrido sobre el fichero. Si el trabajo a hacer sobre el fichero es pesado (cuello de botella en cpu) se puede probar a parelizar con multiproceso. Eso si, a veces la sincrinización/comunicación entre procesos puede quitar más rendimiento del que aporta. Si ... Por desgracia no conozco recetas mágicas para usar en todos los casos. Pero si que hay algunas herramientas que se pueden tener en reserva para aplicar en casos concretos. De ahí que la respuesta corta fuese "si, no, a veces" ;-) [1] http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm Moraleja 3: No centrarse solo en la ejecución del código. Si el objetivo es tener el resultado de una ejecución concreta, desde que eres consciente del problema hasta que obtienes el resultado, el tiempo de ejecución del script que hace la tarea suele ser el menor de todos. Un programa en C que se ejecuta en 2 segundos y que tarda en escribirse 2 horas es peor solución a un programa ineficiente en python que tarda en escribirse 5 minutos y 10 en ejecutarse. En este caso concreto yo hubiera escrito lo siguiente: cat fichero | awk 'BEGIN{FS="|"}{print $9}' > resultado Simplemente porque un oneliner en la consola me cuesta menos que abrir el vim y escribir un script de python. Un saludo: Javi From kikocorreoso en gmail.com Fri Jun 3 14:10:24 2011 From: kikocorreoso en gmail.com (Kiko) Date: Fri, 3 Jun 2011 14:10:24 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: > Respuesta corta: Si, no, a veces. > Me imaginaba algo así :-D Muchas gracias por la extensión de la explicación. Exploraré mmap (aunque creo que para lo que lo estoy pensando ahora será menos útil) y multiprocesos y lo que pille por ahí. Como bien has dicho, no merece la pena programar dos horas para 2s de proceso. Pero esos 2s los tengo que repetir muchas veces todos los días. Si no consigo mejorar nada por lo menos habré aprendido algo (o no, que soy muy zoquete). ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From alexis.roda.villalonga en gmail.com Fri Jun 3 21:19:57 2011 From: alexis.roda.villalonga en gmail.com (Alexis Roda) Date: Fri, 03 Jun 2011 21:19:57 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: Message-ID: <4DE933DD.2020307@gmail.com> En/na Kiko ha escrit: En el programa que mandaste en el primer mensaje parece implícito que la longitud del código es siempre de 9 caracteres. Esto hace innecesario el uso de rsplit o rfind. def procesa(entrada, salida) : with open(entrada,'r') as input: with open(salida,'w') as output: for l in input : output.write(l[-9:]) In [1]: l = "1|2011-05-20 23:08:56|122711527|OPERADOR1|HOST TOHOST|212454|10000|HOST CLIENTE|192630167" In [2]: timeit l.rsplit("|", 1)[-1] 1000000 loops, best of 3: 827 ns per loop In [3]: timeit l[l.rindex("|")+1:] 1000000 loops, best of 3: 676 ns per loop In [4]: timeit l[l.rfind("|")+1:] 1000000 loops, best of 3: 682 ns per loop In [5]: timeit l[-9:] 1000000 loops, best of 3: 208 ns per loop Fíjate en que utilizar rfind (o rindex) como hacías originalmente es mas eficiente que utilizar rsplit. La explicación es que rsplit crea dos cadenas (la "mitad" izquierda y la derecha), una lista con las dos cadenas y finalmente accede al último elemento de la lista. En la versión con rindex se crea directamente la cadena derecha. Como curiosidad, en el caso de utilizar un método de l podrías arañar unos nanosegundos haciendo algo como: In [6]: rf=l.rfind In [7]: timeit l[rf("|")+1:] 1000000 loops, best of 3: 602 ns per loop con esto evitas que el interprete tenga que buscar el método rfind de l en cada iteración. > Claramente, rsplit parece que funciona mejor. He hecho mi función > (abrekiko) con una list comprehesion y también va un poquito más lenta > que con el for a pelo y tenía entendido que usar list comprehensions era > más efectivo. Las list comprehension sirven para crear listas. Lo que hace tu código es equivalente a: def abrelasi(entrada,salida): lista = [] with open(entrada,'r') as input: with open(salida,'w') as output: for l in input : lista.append(output.write(l.rsplit(',',1)[-1])) Al final "lista" contiene 300000 valores None. No le veo el sentido. > ¿Alguien tiene formas más rápidas de lectura de ficheros de texto? Yo hubiese utilizado cut -d\| -f9 entrada.txt > salida.txt Como ya te han dicho debes considerar el tiempo de desarrollo mas el tiempo de ejecución y valorar si el esfuerzo extra vale la pena. Dicho esto, si quieres aprender, te recomendaría probar el módulo cProfile: http://docs.python.org/library/profile.html#module-cProfile este modulo mide el tiempo de ejecución del programa y te ayudará a descubrir donde está el cuello de botella. Tal vez estés dedicando horas a optimizar algo que luego no tiene un impacto decisivo en el tiempo total de ejecución. En el caso de procesar el archivo tengo la impresión de que el problema estará en la E/S y no el el procesamiento de los datos en si (utilizando un programa razonable). Saludos From edinson.padron23 en gmail.com Sat Jun 4 03:04:29 2011 From: edinson.padron23 en gmail.com (Edinson Padron) Date: Fri, 03 Jun 2011 20:34:29 -0430 Subject: [Python-es] Mapear un 'get_attr' [P] Message-ID: <4DE9849D.8050206@gmail.com> Saludos a todos, silly question... no logro recordar una función y mucho menos el modulo que la contiene, posiblemente la reconozcan si les describo la situación para la cual fue desarrollada: map(lambda x: x.att, iterable) obviamente dicha función cumple el objetivo de esta porción del código 'lambda x: x.att' Muchas gracias por su tiempo. From maengora en gmail.com Sat Jun 4 04:18:37 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Fri, 3 Jun 2011 21:18:37 -0500 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: <4DE933DD.2020307@gmail.com> References: <4DE933DD.2020307@gmail.com> Message-ID: El 3 de junio de 2011 14:19, Alexis Roda escribió: > En/na Kiko ha escrit: > > En el programa que mandaste en el primer mensaje parece implícito que la > longitud del código es siempre de 9 caracteres. Esto hace innecesario el uso > de rsplit o rfind. > > def procesa(entrada, salida) : > > with open(entrada,'r') as input: > with open(salida,'w') as output: > for l in input : > output.write(l[-9:]) > > In [1]: l = "1|2011-05-20 23:08:56|122711527|OPERADOR1|HOST > TOHOST|212454|10000|HOST CLIENTE|192630167" > > In [2]: timeit l.rsplit("|", 1)[-1] > 1000000 loops, best of 3: 827 ns per loop > > In [3]: timeit l[l.rindex("|")+1:] > 1000000 loops, best of 3: 676 ns per loop > > In [4]: timeit l[l.rfind("|")+1:] > 1000000 loops, best of 3: 682 ns per loop > > In [5]: timeit l[-9:] > 1000000 loops, best of 3: 208 ns per loop > > Fíjate en que utilizar rfind (o rindex) como hacías originalmente es mas > eficiente que utilizar rsplit. La explicación es que rsplit crea dos cadenas > (la "mitad" izquierda y la derecha), una lista con las dos cadenas y > finalmente accede al último elemento de la lista. En la versión con rindex > se crea directamente la cadena derecha. > > Como curiosidad, en el caso de utilizar un método de l podrías arañar unos > nanosegundos haciendo algo como: > > In [6]: rf=l.rfind > > In [7]: timeit l[rf("|")+1:] > 1000000 loops, best of 3: 602 ns per loop > > con esto evitas que el interprete tenga que buscar el método rfind de l en > cada iteración. > > > Claramente, rsplit parece que funciona mejor. He hecho mi función >> (abrekiko) con una list comprehesion y también va un poquito más lenta que >> con el for a pelo y tenía entendido que usar list comprehensions era más >> efectivo. >> > > Las list comprehension sirven para crear listas. Lo que hace tu código es > equivalente a: > > def abrelasi(entrada,salida): > lista = [] > > with open(entrada,'r') as input: > with open(salida,'w') as output: > for l in input : > lista.append(output.write(l.rsplit(',',1)[-1])) > > Al final "lista" contiene 300000 valores None. No le veo el sentido. > > > ¿Alguien tiene formas más rápidas de lectura de ficheros de texto? >> > > Yo hubiese utilizado cut -d\| -f9 entrada.txt > salida.txt > > Como ya te han dicho debes considerar el tiempo de desarrollo mas el tiempo > de ejecución y valorar si el esfuerzo extra vale la pena. Dicho esto, si > quieres aprender, te recomendaría probar el módulo cProfile: > > http://docs.python.org/library/profile.html#module-cProfile > > este modulo mide el tiempo de ejecución del programa y te ayudará a > descubrir donde está el cuello de botella. Tal vez estés dedicando horas a > optimizar algo que luego no tiene un impacto decisivo en el tiempo total de > ejecución. > > En el caso de procesar el archivo tengo la impresión de que el problema > estará en la E/S y no el el procesamiento de los datos en si (utilizando un > programa razonable). > > > > Saludos > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > Excelentísimos aportes de todos, si que se aprende!! De verdad muuchas gracias, he seguido el hilo, cambiado el código y he obtenido excelentes resultados. Estos aportes están de lo máximo y si continúa bienvenido sea el aprendizaje.... -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From carlos.zun en gmail.com Sat Jun 4 06:26:50 2011 From: carlos.zun en gmail.com (Carlos Zuniga) Date: Fri, 3 Jun 2011 23:26:50 -0500 Subject: [Python-es] Mapear un 'get_attr' [P] In-Reply-To: <4DE9849D.8050206@gmail.com> References: <4DE9849D.8050206@gmail.com> Message-ID: 2011/6/3 Edinson Padron : > Saludos a todos, > > silly question... no logro recordar una función y mucho menos el modulo que > la contiene, posiblemente la reconozcan si les describo la situación para la > cual fue desarrollada: > > map(lambda x: x.att, iterable) > > obviamente dicha función cumple el objetivo de esta porción del código > 'lambda x: x.att' > te refieres a getattr? getattr(x, 'att') por otro lado, tambien podrias usar esto: [x.att for x in iterable] Saludos -- Linux Registered User # 386081 A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. From edinson.padron23 en gmail.com Sat Jun 4 08:07:41 2011 From: edinson.padron23 en gmail.com (Edinson Padron) Date: Sat, 04 Jun 2011 01:37:41 -0430 Subject: [Python-es] Mapear un 'get_attr' [P] In-Reply-To: References: <4DE9849D.8050206@gmail.com> Message-ID: <4DE9CBAD.4080305@gmail.com> > te refieres a getattr? > > getattr(x, 'att') > lamentablemente no es a lo que me refiero, recuerdo que es semejante a lo siguiente: map(funcion('attr'), iterable) > [x.att for x in iterable] > lo considere, pero como map esta implementado en C, es mucho mas rápido que una list comprehension Gracias por tu tiempo, espero que alguien por alli tenga la respuesta :D From andsux en gmail.com Sat Jun 4 12:49:50 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Sat, 4 Jun 2011 12:49:50 +0200 Subject: [Python-es] Buscar, leer y escribir archivos grandes con Python In-Reply-To: References: <4DE933DD.2020307@gmail.com> Message-ID: Hola. Me pareció muy interesante este hilo y he hecho unas cuantas pruebas con el modulo IO de python3 Y en promedio me procesa un archivo de 70Mb en 1 segundo. El código de la prueba: http://pastii.com.ar/1819 Andrei. ;) El 4 de junio de 2011 04:18, Manuel Enrique González Ramírez < maengora en gmail.com> escribió: > > > El 3 de junio de 2011 14:19, Alexis Roda > escribió: > > En/na Kiko ha escrit: >> >> En el programa que mandaste en el primer mensaje parece implícito que la >> longitud del código es siempre de 9 caracteres. Esto hace innecesario el uso >> de rsplit o rfind. >> >> def procesa(entrada, salida) : >> >> with open(entrada,'r') as input: >> with open(salida,'w') as output: >> for l in input : >> output.write(l[-9:]) >> >> In [1]: l = "1|2011-05-20 23:08:56|122711527|OPERADOR1|HOST >> TOHOST|212454|10000|HOST CLIENTE|192630167" >> >> In [2]: timeit l.rsplit("|", 1)[-1] >> 1000000 loops, best of 3: 827 ns per loop >> >> In [3]: timeit l[l.rindex("|")+1:] >> 1000000 loops, best of 3: 676 ns per loop >> >> In [4]: timeit l[l.rfind("|")+1:] >> 1000000 loops, best of 3: 682 ns per loop >> >> In [5]: timeit l[-9:] >> 1000000 loops, best of 3: 208 ns per loop >> >> Fíjate en que utilizar rfind (o rindex) como hacías originalmente es mas >> eficiente que utilizar rsplit. La explicación es que rsplit crea dos cadenas >> (la "mitad" izquierda y la derecha), una lista con las dos cadenas y >> finalmente accede al último elemento de la lista. En la versión con rindex >> se crea directamente la cadena derecha. >> >> Como curiosidad, en el caso de utilizar un método de l podrías arañar unos >> nanosegundos haciendo algo como: >> >> In [6]: rf=l.rfind >> >> In [7]: timeit l[rf("|")+1:] >> 1000000 loops, best of 3: 602 ns per loop >> >> con esto evitas que el interprete tenga que buscar el método rfind de l en >> cada iteración. >> >> >> Claramente, rsplit parece que funciona mejor. He hecho mi función >>> (abrekiko) con una list comprehesion y también va un poquito más lenta >>> que con el for a pelo y tenía entendido que usar list comprehensions era más >>> efectivo. >>> >> >> Las list comprehension sirven para crear listas. Lo que hace tu código es >> equivalente a: >> >> def abrelasi(entrada,salida): >> lista = [] >> >> with open(entrada,'r') as input: >> with open(salida,'w') as output: >> for l in input : >> lista.append(output.write(l.rsplit(',',1)[-1])) >> >> Al final "lista" contiene 300000 valores None. No le veo el sentido. >> >> >> ¿Alguien tiene formas más rápidas de lectura de ficheros de texto? >>> >> >> Yo hubiese utilizado cut -d\| -f9 entrada.txt > salida.txt >> >> Como ya te han dicho debes considerar el tiempo de desarrollo mas el >> tiempo de ejecución y valorar si el esfuerzo extra vale la pena. Dicho esto, >> si quieres aprender, te recomendaría probar el módulo cProfile: >> >> http://docs.python.org/library/profile.html#module-cProfile >> >> este modulo mide el tiempo de ejecución del programa y te ayudará a >> descubrir donde está el cuello de botella. Tal vez estés dedicando horas a >> optimizar algo que luego no tiene un impacto decisivo en el tiempo total de >> ejecución. >> >> En el caso de procesar el archivo tengo la impresión de que el problema >> estará en la E/S y no el el procesamiento de los datos en si (utilizando un >> programa razonable). >> >> >> >> Saludos >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > Excelentísimos aportes de todos, si que se aprende!! > > De verdad muuchas gracias, he seguido el hilo, cambiado el código y he > obtenido excelentes resultados. Estos aportes están de lo máximo y si > continúa bienvenido sea el aprendizaje.... > > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From andsux en gmail.com Sat Jun 4 14:18:13 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Sat, 4 Jun 2011 14:18:13 +0200 Subject: [Python-es] respuesta consulta python y sqlite In-Reply-To: References: <1306963510.3924.5.camel@enxebuntu> <4DE6B711.2010507@buyteknet.info> Message-ID: Hola. Ahora que leo este hilo, no me parece a mi que hay demasiadas respuestas (?) y todas prácticamente iguales...(?) En mi opinión con un par de distintas soluciones bastaría. O aun mejor, un enlace a la documentación y si después de haberla leído no entiende algo se pregunta. Un tiempo y un esfuerzo que se ahorra mucha gente. Escribir por llenar el espacio en el buzón de correo y el almacenamiento de la lista de correos no da ninguna recompensa. No es malo, pero es inútil. Un saludo. Andrei. El 2 de junio de 2011 03:54, Manuel Enrique González Ramírez < maengora en gmail.com> escribió: > Hola Jose, > > Gracias por tu consejo, ya el asunto estuvo solucionado con precisamente > las instrucciones de Joe > > El 1 de junio de 2011 17:02, gerardo Juarez escribió: > > Manuel, >> >> Ve lo que dice Joe. No he usado nunca SQLite, pero supongo que sigue la >> DB-API 2.0 de Python. Si ese es el caso, 'c' en tu >> código es un cursor y por lo tanto, como dice Joe, c.execute() ejecuta >> nada más el *query* . Luego tienes que obtener los >> datos con c.fetchall() o c.fetchone(). En el caso que pones en el que >> obtienes un sólo número, pasa como en este ejemplo: >> >> cur = db.cursor() >> cur.execute('select count(*) from articulos') # cuantos registros hay >> en esta tabla >> row = cur.fetchone() >> print row[0] # imprime cuantos registros obtuvo >> >> Esto es, aún siendo count(*) lo que quieres, te va a regresar un arreglo >> (o lista), por lo que lo recibes como tal y el número es >> el primer y único elemento de la lista (o arreglo). >> >> Lo que estás imprimiendo es el cursor mismo, por eso lo transforma a una >> representación imprimible y obtienes: >> >> >> >> Saludos >> Gerardo >> >> >> >> >> Manuel Enrique González Ramírez wrote: >> >>> Perdón a todos, >>> >>> De los afanes me comí unas líneas de código (justos las del problema): >>> >>> # Consultemos los datos >>> c.execute('SELECT * FROM tabla') >>> >>> for row in c: >>> print row >>> >>> c.execute('select count(secuencia) from tabla') >>> print 'Total transacciones: ',c >>> >>> >>> >>> El 1 de junio de 2011 16:25, joe di castro >> enxebree en gmail.com>> escribió: >>> >>> >>> Por cierto la documentación que necesites sobre SQLite y sqlite3 la >>> tienes aquí: >>> >>> http://docs.python.org/library/sqlite3.html#module-sqlite3 >>> http://www.sqlite.org/ >>> >>> Saludos >>> Joe >>> >>> El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez >>> escribió: >>> > Saludos. >>> > >>> > >>> > Se me presenta un situación en la empresa para la que trabajo que >>> > quiero solucionar con un script de Python acompañado de SQLite. El >>> > asunto es que no tengo mucha experiencia con SQLite y al querer >>> hacer >>> > un count de una tabla me arroja el resultado con el siguiente >>> formato: >>> > >>> > >>> > >>> > >>> > >>> > El fragmento de codigo que me genera el resultado es este: >>> > >>> > >>> > c.execute('SELECT * FROM tabla') >>> > >>> > >>> > for row in c: >>> > print row >>> > >>> > >>> > Alguien me puede indicar como ver ese resultado en formato decimal?? >>> > >>> > >>> > La misma consulta la hago en el editor de sqlite (plugin de >>> Mozilla) y >>> > me arroja el dato en el formato deseado; también me di una >>> pasada por >>> > San Google pero no logro hallar documentación al respecto. >>> > >>> > >>> > >>> > >>> > A todos muchas gracias >>> > >>> > -- >>> > Manuel Enrique González Ramírez >>> > http://maengora.blogspot.com >>> > >>> > _______________________________________________ >>> > Python-es mailing list >>> > Python-es en python.org >>> >>> > http://mail.python.org/mailman/listinfo/python-es >>> > FAQ: http://python-es-faq.wikidot.com/ >>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >>> >>> >>> -- >>> Manuel Enrique González Ramírez >>> http://maengora.blogspot.com >>> ------------------------------------------------------------------------ >>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From carlos.zun en gmail.com Sat Jun 4 16:57:04 2011 From: carlos.zun en gmail.com (Carlos Zuniga) Date: Sat, 4 Jun 2011 14:57:04 +0000 Subject: [Python-es] Mapear un 'get_attr' [P] In-Reply-To: <4DE9CBAD.4080305@gmail.com> References: <4DE9849D.8050206@gmail.com> <4DE9CBAD.4080305@gmail.com> Message-ID: 2011/6/4 Edinson Padron : > >> te refieres a getattr? >> >>     getattr(x, 'att') >> > > lamentablemente no es a lo que me refiero, recuerdo que es semejante a lo > siguiente: > > map(funcion('attr'), iterable) ahh, un closure, tendrías que definir una función así: def getxattr(attr): def foo(x): return getattr(x,attr) return foo map(getxattr('attr'), iterable) No sé si ya existe esa función > >>     [x.att for x in iterable] >> > > lo considere, pero como map esta implementado en C, es mucho mas rápido que > una list comprehension Estas seguro? un simple test me muestra que la list comprehension es mucho más rápida: >>> import timeit >>> timeit.timeit('map(lambda x: x.numerator, a)', 'a=(1,2,3,4)') 2.7023310661315918 >>> timeit.timeit('map(getxattr, a)', """ a=(1,2,3,4) def getxattr(x): return x.numerator """) 2.5119788646697998 >>> timeit.timeit("map(getxattr('numerator'),a)", """ a=(1,2,3,4) def getxattr(attr): def foo(x): return getattr(x, attr) return foo """) 4.4668419361114502 >>> timeit.timeit('[x.numerator for x in a]', 'a=(1,2,3,4)') 1.0678210258483887 Esto usando python 2.6 Saludos -- Linux Registered User # 386081 A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. From carlos.zun en gmail.com Sat Jun 4 17:12:31 2011 From: carlos.zun en gmail.com (Carlos Zuniga) Date: Sat, 4 Jun 2011 15:12:31 +0000 Subject: [Python-es] Mapear un 'get_attr' [P] In-Reply-To: References: <4DE9849D.8050206@gmail.com> <4DE9CBAD.4080305@gmail.com> Message-ID: 2011/6/4 Carlos Zuniga : > 2011/6/4 Edinson Padron : >> >>> te refieres a getattr? >>> >>>     getattr(x, 'att') >>> >> >> lamentablemente no es a lo que me refiero, recuerdo que es semejante a lo >> siguiente: >> >> map(funcion('attr'), iterable) > > ahh, un closure, tendrías que definir una función así: > >    def getxattr(attr): >        def foo(x): >            return getattr(x,attr) >    return foo > >    map(getxattr('attr'), iterable) > > No sé si ya existe esa función > >> >>>     [x.att for x in iterable] >>> >> >> lo considere, pero como map esta implementado en C, es mucho mas rápido que >> una list comprehension > > Estas seguro? un simple test me muestra que la list comprehension es > mucho más rápida: > >    >>> import timeit >    >>> timeit.timeit('map(lambda x: x.numerator, a)', 'a=(1,2,3,4)') >    2.7023310661315918 > >    >>> timeit.timeit('map(getxattr, a)', """ >    a=(1,2,3,4) >    def getxattr(x): >        return x.numerator >    """) >    2.5119788646697998 > >    >>> timeit.timeit("map(getxattr('numerator'),a)", """ >    a=(1,2,3,4) >    def getxattr(attr): >         def foo(x): >             return getattr(x, attr) >         return foo >    """) >    4.4668419361114502 > Ligera modificación para evitar generar la función foo en cada iteración, pero la velocidad aún queda lejos... >>> timeit.timeit('map(bar,a)', """ a=(1,2,3,4) def getxattr(attr): def foo(x): return getattr(x, attr) return foo bar=getxattr('numerator') """) 3.4971849918365479 From edinson.padron23 en gmail.com Sat Jun 4 22:35:52 2011 From: edinson.padron23 en gmail.com (Edinson Padron) Date: Sat, 4 Jun 2011 16:05:52 -0430 Subject: [Python-es] Mapear un 'get_attr' [P] In-Reply-To: References: <4DE9849D.8050206@gmail.com> <4DE9CBAD.4080305@gmail.com> Message-ID: kewll! olvidaba que hay que llamar a cada rato a la función, thx man :D From diazluis2007 en gmail.com Sun Jun 5 16:51:02 2011 From: diazluis2007 en gmail.com (=?UTF-8?Q?Luis_D=C3=ADaz?=) Date: Sun, 5 Jun 2011 10:21:02 -0430 Subject: [Python-es] modulos disponibles y agregar otros Message-ID: saludos. quisiera jugar un rato con http://syntensity.com/static/python.html (jugar para determinar posibilidades y luego hacer algo serio) mi pregunta es: como puedo saber cuantos módulos estan disponibles en esa implementacion y como agregar otros sin tener que usar Emscripten tengo una idea que quizás a algunos les parezca poco factible. la cual es armar un cluster de procesamiento en python que corra en maquinas clientes sobre google chrome Díaz Luis http://www.facebook.com/diazluis2007 User Linux 532223 progjuegos.com TSU Analisis de Sistemas Universidad de Carabobo Facultad de Odontología ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From carlos.zun en gmail.com Sun Jun 5 20:52:32 2011 From: carlos.zun en gmail.com (Carlos Zuniga) Date: Sun, 5 Jun 2011 18:52:32 +0000 Subject: [Python-es] modulos disponibles y agregar otros In-Reply-To: References: Message-ID: 2011/6/5 Luis Díaz : > saludos. > quisiera jugar un rato con > http://syntensity.com/static/python.html > (jugar para determinar posibilidades y luego hacer algo serio) > mi pregunta es: > como puedo saber cuantos módulos estan disponibles en esa implementacion > y como agregar otros > sin tener que usar  Emscripten > tengo una idea que quizás a algunos les parezca poco factible. > la cual es armar un cluster de procesamiento en python que corra > en maquinas clientes sobre google chrome > `print "\n".join([k for k in sys.modules])` muestra solo estos modulos: zipimport signal __builtin__ sys __main__ exceptions _warnings Supongo que puedes agregar modulos hechos en puro python que no dependan de otros hechos en c o c++ De todos modos, la limitación es que solo vas a poder hacer lo que se puede hacer directamente en javascript en el navegador Tal vez sería mucho más factible hacer lo que quieres directamente sobre javascript que agregar otra capa extra... Saludos -- Linux Registered User # 386081 A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. From diazluis2007 en gmail.com Sun Jun 5 22:00:15 2011 From: diazluis2007 en gmail.com (=?UTF-8?Q?Luis_D=C3=ADaz?=) Date: Sun, 5 Jun 2011 15:30:15 -0430 Subject: [Python-es] modulos disponibles y agregar otros In-Reply-To: References: Message-ID: hola :D gracias por la respuesta estube leyendo y he ejecutado esto: import sys print 'mudulos {}'.format(sys.builtin_module_name) y me arrojo lo siguiente: '__builtin__', '__main__', '_ast', '_codecs', '_sre', '_symtable', '_warnings', '_weakref', 'errno', 'exceptions', 'gc', 'imp', 'marshal', 'posix', 'pwd', 'signal', 'sys', 'xxsubtype', 'zipimport' sabes.. estoy pensando que tienes razón. me estoy dando cuenta que javascript tiene cierto potencia, osea me gusta mucho python y quiero hacerlo sobre el, pero observando cosas como http://syntensity.com/static/python.html http://bellard.org/jslinux/ si tienen idea de que módulos (escritos en python) me puedan servir para hacer calculo científico se los agradecería... estoy pensando en migrar (a pie... poco a poco) hacia javascript y crear un marco para lo que necesito Díaz Luis http://www.facebook.com/diazluis2007 User Linux 532223 progjuegos.com TSU Analisis de Sistemas Universidad de Carabobo Facultad de Odontología El 5 de junio de 2011 14:22, Carlos Zuniga escribió: > 2011/6/5 Luis Díaz : > > saludos. > > quisiera jugar un rato con > > http://syntensity.com/static/python.html > > (jugar para determinar posibilidades y luego hacer algo serio) > > mi pregunta es: > > como puedo saber cuantos módulos estan disponibles en esa implementacion > > y como agregar otros > > sin tener que usar Emscripten > > tengo una idea que quizás a algunos les parezca poco factible. > > la cual es armar un cluster de procesamiento en python que corra > > en maquinas clientes sobre google chrome > > > > `print "\n".join([k for k in sys.modules])` muestra solo estos modulos: > > zipimport > signal > __builtin__ > sys > __main__ > exceptions > _warnings > > > Supongo que puedes agregar modulos hechos en puro python que no > dependan de otros hechos en c o c++ > De todos modos, la limitación es que solo vas a poder hacer lo que se > puede hacer directamente en javascript en el navegador > > Tal vez sería mucho más factible hacer lo que quieres directamente > sobre javascript que agregar otra capa extra... > > Saludos > -- > Linux Registered User # 386081 > A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos > de leer manuales. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From plobarinas en jcea.es Tue Jun 7 15:52:47 2011 From: plobarinas en jcea.es (=?ISO-8859-1?Q?Pablo_Lobari=F1as?=) Date: Tue, 07 Jun 2011 15:52:47 +0200 Subject: [Python-es] Convocatoria reunion 9 de junio python-madrid Message-ID: <4DEE2D2F.10305@jcea.es> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hola a todos: Para aquellos que esteis interesados y podais asistir, aquí os paso detalles de la próxima reunión que tendremos: Este Jueves 09 de junio a las 20:00 horas: Charlas Python-Madrid Contenido: - Introducción a GIS y mapping por Kiko - PyCairo por Jesús Espino - Próximas reuniones: propuestas, difusión, contenidos Lugar: Oficinas O2C. C/ Orellana 1, 1ºD Metro Alonso Martínez (salida plaza de Sta Bárbara) Un saludo. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iD8DBQFN7i0unPFBatEMYOcRAlO6AKC7UjhyCq9+M9QN3YnCKZybvRshFgCfc8Ym u4LPooSkNeIOqX8GCUhP3lE= =P7d+ -----END PGP SIGNATURE----- From gmcabral en gmail.com Tue Jun 7 18:09:11 2011 From: gmcabral en gmail.com (Gustavo Cabral) Date: Tue, 7 Jun 2011 13:09:11 -0300 Subject: [Python-es] Odontograma Message-ID: Hola: Antes que nada, disculpas si este no es el medio para esta pregunta. Estuve buscando sin suerte, una librería o algo por el estilo que me permita realizar un odontrograma con python. Necesitaría saber si existe algo simple o que ya se hizo para realizar una simple interfaz para el usuario que me guarde estos datos gráficos en mi base de datos. Actualmente estoy trabajando con openERP de maravillas y la idea es crear un modulo para odontología. Me adelanto, muchas gracias por sus sugerencias. Los saluda, Gustavo.- -- ?Una vez terminado el juego, el rey y el peón vuelven a la misma caja?. From bertothunder en gmail.com Tue Jun 7 18:20:26 2011 From: bertothunder en gmail.com (Alberto Curro) Date: Tue, 7 Jun 2011 18:20:26 +0200 Subject: [Python-es] Odontograma In-Reply-To: References: Message-ID: Hola Gustavo, lo que te voy a copiar [1] es para C#, un control específico, pero creo que te puede dar ideas acerca del interfaz y la UI en tu programa. El [2] es incluso más sencillo. Con un grupo de imágenes, un control tipo grid y un poco de imaginación no te debería ser muy complicado hacer algo similar. Saludos Alberto Curro [1]http://www.youtube.com/watch?v=BBAHeal2Q5E&feature=related [2]http://www.youtube.com/watch?v=0g0H8lDtGx4&NR=1 El 7 de junio de 2011 18:09, Gustavo Cabral escribió: > Hola: > Antes que nada, disculpas si este no es el medio para esta pregunta. > Estuve buscando sin suerte, una librería o algo por el estilo que me > permita realizar un odontrograma con python. Necesitaría saber si > existe algo simple o que ya se hizo para realizar una simple interfaz > para el usuario que me guarde estos datos gráficos en mi base de > datos. > Actualmente estoy trabajando con openERP de maravillas y la idea es > crear un modulo para odontología. > > Me adelanto, muchas gracias por sus sugerencias. > > Los saluda, Gustavo.- > > -- > > ?Una vez terminado el juego, el rey y el peón vuelven a la misma caja?. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Wed Jun 8 00:05:28 2011 From: morillas en gmail.com (Luis Miguel Morillas) Date: Wed, 8 Jun 2011 00:05:28 +0200 Subject: [Python-es] Odontograma In-Reply-To: References: Message-ID: Saludos, -- luismiguel l El día 7 de junio de 2011 18:09, Gustavo Cabral escribió: > Hola: > Antes que nada, disculpas si este no es el medio para esta pregunta. > Estuve buscando sin suerte, una librería o algo por el estilo que me > permita realizar un odontrograma con python. Necesitaría saber si > existe algo simple o que ya se hizo para realizar una simple interfaz > para el usuario que me guarde estos datos gráficos en mi base de > datos. > Actualmente estoy trabajando con openERP de maravillas y la idea es > crear un modulo para odontología. > > Me adelanto, muchas gracias por sus sugerencias. > > Los saluda, Gustavo.- > En http://www.openerpsite.com/ tienes cursos y documentación para crear módulos para openerp. Pregunta a Ana Juaristi (http://www.anajuaristi.com) por el estado de la odontología en OpenERP, te contestará encantada. -- lm > -- > > ?Una vez terminado el juego, el rey y el peón vuelven a la misma caja?. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > From jldalla en gmail.com Wed Jun 8 16:14:12 2011 From: jldalla en gmail.com (Jose Luis Dallapiccola) Date: Wed, 8 Jun 2011 11:14:12 -0300 Subject: [Python-es] py2exe: me tira error al ejecutar el setup.py In-Reply-To: <549772.46393.qm@web65611.mail.ac4.yahoo.com> References: <549772.46393.qm@web65611.mail.ac4.yahoo.com> Message-ID: On Sun, Jul 11, 2010 at 4:03 PM, Ramiro wrote: > Hola > Hola Ramiro, muy buenas... He leido el mensaje un poco tarde (quizás). > > No puedo hacer andar el py2exe para un programita que usa gtk: > > #El error que me tira es este:###################################### > Traceback (most recent call last): > File "P:\setup.py", line 21, in > 'includes': 'cairo, pango, pangocairo, atk, gobject, gtk, pygtk', > File "C:\Python26\lib\distutils\core.py", line 140, in setup > raise SystemExit, gen_usage(dist.script_name) + "\nerror: %s" % msg > SystemExit: usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 > [cmd2_opts] ...] > or: setup.py --help [cmd1 cmd2 ...] > or: setup.py --help-commands > or: setup.py cmd --help > > error: no commands supplied > > Alguien tiene idea de qué puede estar pasando? > El comando que tendrías que ejecutar para generar el ejecutable es python setup.py py2exe Por lo que veo del mensaje de error lo que te estaría faltando es "py2exe". > > > saludos > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- --- José Luis DALLAPICCOLA Neuquén Capital Patagonia Argentina ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Wed Jun 8 16:34:17 2011 From: listas en soft-com.es (Oswaldo) Date: Wed, 08 Jun 2011 16:34:17 +0200 Subject: [Python-es] Convocatoria reunion 9 de junio python-madrid In-Reply-To: <4DEE2D2F.10305@jcea.es> References: <4DEE2D2F.10305@jcea.es> Message-ID: <4DEF8869.6070501@soft-com.es> El 07/06/2011 15:52, Pablo Lobariñas escribió: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hola a todos: > > Para aquellos que esteis interesados y podais asistir, aquí os > paso detalles de la próxima reunión que tendremos: > > Este Jueves 09 de junio a las 20:00 horas: Charlas Python-Madrid > > Contenido: > > - Introducción a GIS y mapping por Kiko > > - PyCairo por Jesús Espino > > - Próximas reuniones: propuestas, difusión, contenidos > > > Lugar: Oficinas O2C. > > C/ Orellana 1, 1ºD > > Metro Alonso Martínez (salida plaza de Sta Bárbara) > El tema de PyCairo me interesa mucho, pero lamentablemente no puedo acudir. ¿Vais a publicar algo de las charlas aunque sea en plan powerpoint? -- Oswaldo Hernández From kikocorreoso en gmail.com Wed Jun 8 16:47:26 2011 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 8 Jun 2011 16:47:26 +0200 Subject: [Python-es] Convocatoria reunion 9 de junio python-madrid In-Reply-To: <4DEF8869.6070501@soft-com.es> References: <4DEE2D2F.10305@jcea.es> <4DEF8869.6070501@soft-com.es> Message-ID: El tema de PyCairo me interesa mucho, pero lamentablemente no puedo acudir. > > ¿Vais a publicar algo de las charlas aunque sea en plan powerpoint? La idea es que todo esté en [1]. De momento solo están las presentaciones de una reunión, pero se están grabando (video y audio) y esperamos que todo esté accesible desde [1]. Tanto lo de esta reunión como lo de las anteriores y posteriores. [1] http://python-hispano.org/PythonMadrid ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maengora en gmail.com Wed Jun 8 20:32:43 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 8 Jun 2011 13:32:43 -0500 Subject: [Python-es] Problemas con executemany desde python con SQLite Message-ID: Hola a tod en s, Estoy tratando de insertar un archivo desde Python con SQLite. La primera vez funciono sin inconvenientes, pero al vaciar la tabla y correr nuevamente el script falla arrojando este error: Traceback (most recent call last): File "/home/manuel/python/diferencias/temp2.py", line 45, in c.executemany('insert into tabla(secuencia) values(?)', secc) AttributeError: 'str' object has no attribute 'executemany' El fragmento del codigo secc= csv.reader(open('datosg.csv')) c.executemany('insert into tabla(secuencia) values(?)', secc) conexion.commit() Gracias de antemano por la colaboración -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Wed Jun 8 20:45:01 2011 From: listas en soft-com.es (Oswaldo) Date: Wed, 08 Jun 2011 20:45:01 +0200 Subject: [Python-es] Convocatoria reunion 9 de junio python-madrid In-Reply-To: References: <4DEE2D2F.10305@jcea.es> <4DEF8869.6070501@soft-com.es> Message-ID: <4DEFC32D.4030500@soft-com.es> El 08/06/2011 16:47, Kiko escribió: > El tema de PyCairo me interesa mucho, pero lamentablemente no puedo acudir. > > > ¿Vais a publicar algo de las charlas aunque sea en plan powerpoint? > > > La idea es que todo esté en [1]. De momento solo están las > presentaciones de una reunión, pero se están grabando (video y audio) y > esperamos que todo esté accesible desde [1]. Tanto lo de esta reunión > como lo de las anteriores y posteriores. > > [1] http://python-hispano.org/PythonMadrid > Gracias, esperaré a que lo publiquéis. Un saludo -- Oswaldo Hernández From carlos.zun en gmail.com Wed Jun 8 23:43:21 2011 From: carlos.zun en gmail.com (Carlos Zuniga) Date: Wed, 8 Jun 2011 21:43:21 +0000 Subject: [Python-es] Problemas con executemany desde python con SQLite In-Reply-To: References: Message-ID: Hola, 2011/6/8 Manuel Enrique González Ramírez : > Hola a tod en s, > Estoy tratando de insertar un archivo desde Python con SQLite.  La primera > vez funciono sin inconvenientes, pero al vaciar la tabla y correr nuevamente > el script falla arrojando este error: > Traceback (most recent call last): >   File "/home/manuel/python/diferencias/temp2.py", line 45, in >     c.executemany('insert into tabla(secuencia) values(?)', secc) > AttributeError: 'str' object has no attribute 'executemany' Parece que tu objeto c es una cadena de texto, no un cursor de sqlite > > El fragmento del codigo > secc= csv.reader(open('datosg.csv')) > c.executemany('insert into tabla(secuencia) values(?)', secc) > conexion.commit() > Tal vez te falta c = conexion.cursor() antes de ese fragmento? Saludos -- Linux Registered User # 386081 A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. From maengora en gmail.com Thu Jun 9 00:32:39 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 8 Jun 2011 17:32:39 -0500 Subject: [Python-es] Problemas con executemany desde python con SQLite In-Reply-To: References: Message-ID: El 8 de junio de 2011 16:43, Carlos Zuniga escribió: > Hola, > > 2011/6/8 Manuel Enrique González Ramírez : > > Hola a tod en s, > > Estoy tratando de insertar un archivo desde Python con SQLite. La > primera > > vez funciono sin inconvenientes, pero al vaciar la tabla y correr > nuevamente > > el script falla arrojando este error: > > Traceback (most recent call last): > > File "/home/manuel/python/diferencias/temp2.py", line 45, in > > c.executemany('insert into tabla(secuencia) values(?)', secc) > > AttributeError: 'str' object has no attribute 'executemany' > > Parece que tu objeto c es una cadena de texto, no un cursor de sqlite > > > > > El fragmento del codigo > > secc= csv.reader(open('datosg.csv')) > > c.executemany('insert into tabla(secuencia) values(?)', secc) > > conexion.commit() > > > > Tal vez te falta c = conexion.cursor() antes de ese fragmento? > Ya la tenía definida: # Datos de conexion conexion = sqlite3.connect('dif_db.sqlite') # Configuracion del cursor c = conexion.cursor() > Saludos > -- > Linux Registered User # 386081 > A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos > de leer manuales. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lowlifebob en gmail.com Thu Jun 9 01:59:16 2011 From: lowlifebob en gmail.com (lopz) Date: Wed, 8 Jun 2011 19:59:16 -0400 Subject: [Python-es] Problemas con executemany desde python con SQLite In-Reply-To: References: Message-ID: El día 8 de junio de 2011 18:32, Manuel Enrique González Ramírez escribió: > El 8 de junio de 2011 16:43, Carlos Zuniga escribió: >> >> Hola, >> >> 2011/6/8 Manuel Enrique González Ramírez : >> > Hola a tod en s, >> > Estoy tratando de insertar un archivo desde Python con SQLite.  La >> > primera >> > vez funciono sin inconvenientes, pero al vaciar la tabla y correr >> > nuevamente >> > el script falla arrojando este error: >> > Traceback (most recent call last): >> >   File "/home/manuel/python/diferencias/temp2.py", line 45, in >> >     c.executemany('insert into tabla(secuencia) values(?)', secc) >> > AttributeError: 'str' object has no attribute 'executemany' >> >> Parece que tu objeto c es una cadena de texto, no un cursor de sqlite >> >> > >> > El fragmento del codigo >> > secc= csv.reader(open('datosg.csv')) >> > c.executemany('insert into tabla(secuencia) values(?)', secc) >> > conexion.commit() >> > >> >> Tal vez te falta c = conexion.cursor() antes de ese fragmento? > >  Ya la tenía definida: > # Datos de conexion > conexion = sqlite3.connect('dif_db.sqlite') > # Configuracion del cursor > c = conexion.cursor() >> lo tienes así? conexion = sqlite3.connect('dif_db.sqlite') c = conexion.cursor() c.execute..... Si es así no debería decirte que c es un str, podrías poner el código completo de esa parte? saludOS >> Saludos >> -- >> Linux Registered User # 386081 >> A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos >> de leer manuales. >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- lopz es libre, usa --> GNU/linux gentoo +--[RSA 2048]--+ |  ..o.o=+       | |   o =o*.+      | |  . . *oO .      | |     .EBoo      | |      o.S         | +--[lopz.org]--+ From maengora en gmail.com Thu Jun 9 03:40:31 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 8 Jun 2011 20:40:31 -0500 Subject: [Python-es] Problemas con executemany desde python con SQLite In-Reply-To: References: Message-ID: El 8 de junio de 2011 18:59, lopz escribió: > El día 8 de junio de 2011 18:32, Manuel Enrique González Ramírez > escribió: > > El 8 de junio de 2011 16:43, Carlos Zuniga > escribió: > >> > >> Hola, > >> > >> 2011/6/8 Manuel Enrique González Ramírez : > >> > Hola a tod en s, > >> > Estoy tratando de insertar un archivo desde Python con SQLite. La > >> > primera > >> > vez funciono sin inconvenientes, pero al vaciar la tabla y correr > >> > nuevamente > >> > el script falla arrojando este error: > >> > Traceback (most recent call last): > >> > File "/home/manuel/python/diferencias/temp2.py", line 45, in > > >> > c.executemany('insert into tabla(secuencia) values(?)', secc) > >> > AttributeError: 'str' object has no attribute 'executemany' > >> > >> Parece que tu objeto c es una cadena de texto, no un cursor de sqlite > >> > >> > > >> > El fragmento del codigo > >> > secc= csv.reader(open('datosg.csv')) > >> > c.executemany('insert into tabla(secuencia) values(?)', secc) > >> > conexion.commit() > >> > > >> > >> Tal vez te falta c = conexion.cursor() antes de ese fragmento? > > > > Ya la tenía definida: > > # Datos de conexion > > conexion = sqlite3.connect('dif_db.sqlite') > > # Configuracion del cursor > > c = conexion.cursor() > >> > > lo tienes así? > > conexion = sqlite3.connect('dif_db.sqlite') > c = conexion.cursor() > c.execute..... > > Si es así no debería decirte que c es un str, podrías poner el código > completo de esa parte? > Código completo #!/usr/bin/env python # -*- coding: cp1252 -*- import os,sys,csv import sqlite3 # Datos de conexion conexion = sqlite3.connect('dif_db.sqlite') # Configuracion del cursor c = conexion.cursor() # Limpio las tablas c.execute('delete from tabla1') conexion.commit() print 'Tabla1 inicializada' c.execute('delete from tabla2') conexion.commit() print 'Tabla2 inicializada' # Solicito el nombre de los archivos a analizar fc = open('archivo1.txt','r') fg = open('archivo2.txt','r') ficherosalida = open('datosc.csv','w') for linea in fc: ficherosalida.write(linea.split('|')[-1]) fc.close() ficherosalida.close() print 'Datos de Tabla1 preparados' ficherosalida2 = open('datosg.csv','w') for linea2 in fg: c = linea2[7:17] ficherosalida2.write(c) ficherosalida2.write('\n') fg.close() ficherosalida2.close() # Abre el archivo y lo prepara para insertar los datos # en la bdd secc= csv.reader(open('datosg.csv')) c.executemany('insert into tabla1(secuencia) values(?)', secc) conexion.commit() conexion.close() > > saludOS > > >> Saludos > >> -- > >> Linux Registered User # 386081 > >> A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos > >> de leer manuales. > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > -- > > Manuel Enrique González Ramírez > > http://maengora.blogspot.com > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > -- > lopz es libre, usa --> GNU/linux gentoo > > +--[RSA 2048]--+ > | ..o.o=+ | > | o =o*.+ | > | . . *oO . | > | .EBoo | > | o.S | > +--[lopz.org]--+ > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lowlifebob en gmail.com Thu Jun 9 04:20:10 2011 From: lowlifebob en gmail.com (lopz) Date: Wed, 8 Jun 2011 22:20:10 -0400 Subject: [Python-es] Problemas con executemany desde python con SQLite In-Reply-To: References: Message-ID: El día 8 de junio de 2011 21:40, Manuel Enrique González Ramírez escribió: > > > El 8 de junio de 2011 18:59, lopz escribió: >> >> El día 8 de junio de 2011 18:32, Manuel Enrique González Ramírez >> escribió: >> > El 8 de junio de 2011 16:43, Carlos Zuniga >> > escribió: >> >> >> >> Hola, >> >> >> >> 2011/6/8 Manuel Enrique González Ramírez : >> >> > Hola a tod en s, >> >> > Estoy tratando de insertar un archivo desde Python con SQLite.  La >> >> > primera >> >> > vez funciono sin inconvenientes, pero al vaciar la tabla y correr >> >> > nuevamente >> >> > el script falla arrojando este error: >> >> > Traceback (most recent call last): >> >> >   File "/home/manuel/python/diferencias/temp2.py", line 45, in >> >> > >> >> >     c.executemany('insert into tabla(secuencia) values(?)', secc) >> >> > AttributeError: 'str' object has no attribute 'executemany' >> >> >> >> Parece que tu objeto c es una cadena de texto, no un cursor de sqlite >> >> >> >> > >> >> > El fragmento del codigo >> >> > secc= csv.reader(open('datosg.csv')) >> >> > c.executemany('insert into tabla(secuencia) values(?)', secc) >> >> > conexion.commit() >> >> > >> >> >> >> Tal vez te falta c = conexion.cursor() antes de ese fragmento? >> > >> >  Ya la tenía definida: >> > # Datos de conexion >> > conexion = sqlite3.connect('dif_db.sqlite') >> > # Configuracion del cursor >> > c = conexion.cursor() >> >> >> >> lo tienes así? >> >> conexion = sqlite3.connect('dif_db.sqlite') >> c = conexion.cursor() >> c.execute..... >> >> Si es así no debería decirte que c es un str, podrías poner el código >> completo de esa parte? > > Código completo > #!/usr/bin/env python > # -*- coding: cp1252 -*- > import os,sys,csv > import sqlite3 > # Datos de conexion > conexion = sqlite3.connect('dif_db.sqlite') > # Configuracion del cursor > c = conexion.cursor() > # Limpio las tablas > c.execute('delete from tabla1') > conexion.commit() > print 'Tabla1 inicializada' > c.execute('delete from tabla2') > conexion.commit() > print 'Tabla2  inicializada' > # Solicito el nombre de los archivos a analizar > fc = open('archivo1.txt','r') > fg = open('archivo2.txt','r') > ficherosalida = open('datosc.csv','w') > for linea in fc: >     ficherosalida.write(linea.split('|')[-1]) > fc.close() > ficherosalida.close() > print 'Datos de Tabla1 preparados' > ficherosalida2 = open('datosg.csv','w') > for linea2 in fg: >     c = linea2[7:17] En esta parte está sobre escribiendo tu variable y se le asigna un tipo str, con cambiar: c = linea2[7:17] por linea = linea2[7:17] y >     ficherosalida2.write(c) por ficherosalida2.write(linea) deberia funcionar >     ficherosalida2.write('\n') > fg.close() > ficherosalida2.close() > > > # Abre el archivo y lo prepara para insertar los datos > # en la bdd > secc= csv.reader(open('datosg.csv')) > c.executemany('insert into tabla1(secuencia) values(?)', secc) > conexion.commit() > conexion.close() > Y.. es que por eso se recomienda poner nombres de variables que describan al objeto, por ejemplo cursor en lugar de c me parece mejor >> >> saludOS >> >> >> Saludos >> >> -- >> >> Linux Registered User # 386081 >> >> A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos >> >> de leer manuales. >> >> _______________________________________________ >> >> Python-es mailing list >> >> Python-es en python.org >> >> http://mail.python.org/mailman/listinfo/python-es >> >> FAQ: http://python-es-faq.wikidot.com/ >> > >> > >> > >> > -- >> > Manuel Enrique González Ramírez >> > http://maengora.blogspot.com >> > >> > _______________________________________________ >> > Python-es mailing list >> > Python-es en python.org >> > http://mail.python.org/mailman/listinfo/python-es >> > FAQ: http://python-es-faq.wikidot.com/ >> > >> > >> >> >> >> -- >> lopz es libre, usa --> GNU/linux gentoo >> >> +--[RSA 2048]--+ >> |  ..o.o=+       | >> |   o =o*.+      | >> |  . . *oO .      | >> |     .EBoo      | >> |      o.S         | >> +--[lopz.org]--+ >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- lopz es libre, usa --> GNU/linux gentoo +--[RSA 2048]--+ |  ..o.o=+       | |   o =o*.+      | |  . . *oO .      | |     .EBoo      | |      o.S         | +--[lopz.org]--+ From maengora en gmail.com Thu Jun 9 15:31:54 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Thu, 9 Jun 2011 08:31:54 -0500 Subject: [Python-es] Problemas con executemany desde python con SQLite In-Reply-To: References: Message-ID: El 8 de junio de 2011 21:20, lopz escribió: > El día 8 de junio de 2011 21:40, Manuel Enrique González Ramírez > escribió: > > > > > > El 8 de junio de 2011 18:59, lopz escribió: > >> > >> El día 8 de junio de 2011 18:32, Manuel Enrique González Ramírez > >> escribió: > >> > El 8 de junio de 2011 16:43, Carlos Zuniga > >> > escribió: > >> >> > >> >> Hola, > >> >> > >> >> 2011/6/8 Manuel Enrique González Ramírez : > >> >> > Hola a tod en s, > >> >> > Estoy tratando de insertar un archivo desde Python con SQLite. La > >> >> > primera > >> >> > vez funciono sin inconvenientes, pero al vaciar la tabla y correr > >> >> > nuevamente > >> >> > el script falla arrojando este error: > >> >> > Traceback (most recent call last): > >> >> > File "/home/manuel/python/diferencias/temp2.py", line 45, in > >> >> > > >> >> > c.executemany('insert into tabla(secuencia) values(?)', secc) > >> >> > AttributeError: 'str' object has no attribute 'executemany' > >> >> > >> >> Parece que tu objeto c es una cadena de texto, no un cursor de sqlite > >> >> > >> >> > > >> >> > El fragmento del codigo > >> >> > secc= csv.reader(open('datosg.csv')) > >> >> > c.executemany('insert into tabla(secuencia) values(?)', secc) > >> >> > conexion.commit() > >> >> > > >> >> > >> >> Tal vez te falta c = conexion.cursor() antes de ese fragmento? > >> > > >> > Ya la tenía definida: > >> > # Datos de conexion > >> > conexion = sqlite3.connect('dif_db.sqlite') > >> > # Configuracion del cursor > >> > c = conexion.cursor() > >> >> > >> > >> lo tienes así? > >> > >> conexion = sqlite3.connect('dif_db.sqlite') > >> c = conexion.cursor() > >> c.execute..... > >> > >> Si es así no debería decirte que c es un str, podrías poner el código > >> completo de esa parte? > > > > Código completo > > #!/usr/bin/env python > > # -*- coding: cp1252 -*- > > import os,sys,csv > > import sqlite3 > > # Datos de conexion > > conexion = sqlite3.connect('dif_db.sqlite') > > # Configuracion del cursor > > c = conexion.cursor() > > # Limpio las tablas > > c.execute('delete from tabla1') > > conexion.commit() > > print 'Tabla1 inicializada' > > c.execute('delete from tabla2') > > conexion.commit() > > print 'Tabla2 inicializada' > > # Solicito el nombre de los archivos a analizar > > fc = open('archivo1.txt','r') > > fg = open('archivo2.txt','r') > > ficherosalida = open('datosc.csv','w') > > for linea in fc: > > ficherosalida.write(linea.split('|')[-1]) > > fc.close() > > ficherosalida.close() > > print 'Datos de Tabla1 preparados' > > ficherosalida2 = open('datosg.csv','w') > > for linea2 in fg: > > c = linea2[7:17] > A esto es lo que solemos llamarle de forma coloquial.... error de indio. > En esta parte está sobre escribiendo tu variable y se le asigna un > tipo str, con cambiar: > c = linea2[7:17] > por > linea = linea2[7:17] > y > > ficherosalida2.write(c) > > por ficherosalida2.write(linea) > > deberia funcionar > > > ficherosalida2.write('\n') > > fg.close() > > ficherosalida2.close() > > > > > > # Abre el archivo y lo prepara para insertar los datos > > # en la bdd > > secc= csv.reader(open('datosg.csv')) > > c.executemany('insert into tabla1(secuencia) values(?)', secc) > > conexion.commit() > > conexion.close() > > > > Ahora me vota este error: c.executemany('insert into tabla1(secuencia) values(?)', secc) ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 0 supplied. Tocará leer más a ver dónde está el error; por ahora, a trabajar.... > Y.. es que por eso se recomienda poner nombres de variables que > describan al objeto, > por ejemplo cursor en lugar de c me parece mejor > > > >> > >> saludOS > >> > >> >> Saludos > >> >> -- > >> >> Linux Registered User # 386081 > >> >> A menudo unas pocas horas de "Prueba y error" podrán ahorrarte > minutos > >> >> de leer manuales. > >> >> _______________________________________________ > >> >> Python-es mailing list > >> >> Python-es en python.org > >> >> http://mail.python.org/mailman/listinfo/python-es > >> >> FAQ: http://python-es-faq.wikidot.com/ > >> > > >> > > >> > > >> > -- > >> > Manuel Enrique González Ramírez > >> > http://maengora.blogspot.com > >> > > >> > _______________________________________________ > >> > Python-es mailing list > >> > Python-es en python.org > >> > http://mail.python.org/mailman/listinfo/python-es > >> > FAQ: http://python-es-faq.wikidot.com/ > >> > > >> > > >> > >> > >> > >> -- > >> lopz es libre, usa --> GNU/linux gentoo > >> > >> +--[RSA 2048]--+ > >> | ..o.o=+ | > >> | o =o*.+ | > >> | . . *oO . | > >> | .EBoo | > >> | o.S | > >> +--[lopz.org]--+ > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > -- > > Manuel Enrique González Ramírez > > http://maengora.blogspot.com > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > -- > lopz es libre, usa --> GNU/linux gentoo > > +--[RSA 2048]--+ > | ..o.o=+ | > | o =o*.+ | > | . . *oO . | > | .EBoo | > | o.S | > +--[lopz.org]--+ > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From alfonsodg en gmail.com Thu Jun 9 20:11:14 2011 From: alfonsodg en gmail.com (Alfonso de la Guarda) Date: Thu, 9 Jun 2011 13:11:14 -0500 Subject: [Python-es] OFF-TOPIC: Relanzamiento del COS, cursos especializados (y Python) Message-ID: Hola, El COS relanza sus servicios sociales y cursos altamente especializados (muchos únicos en el LA) contando con la participación de reputados científicos / geeks / hackers nacionales e internacionales. Los invitamos a enterarse de esto y sus proyectos en la web: www.cos-la.net. Nuestro local se ubica en Lince, pero estamos cerrando unos acuerdos para otro en Monterrico junto con una importante co-certificación de valor internacional en ciencia y/o tecnología por cada curso ofrecido. (más novedades en las próximas semanas). Los primeros cursos a lanzarse son : Python Básico e Intermedio, pero ya viene en Julio unos 5 adicionales. P.D.- Hemos enviado invitaciones previas a muchos de los que consideramos mejores en el Perú en diversas áreas de especialización, si no has recibido una de éstas, te solicitamos disculparnos y te rogamos comunicarte con nosotros para tu participación en el proyecto: direccion en cos-la.net Saludos, -------------------------------- Alfonso de la Guarda Centro Open Source(COS) http://www.cos-la.net http://alfonsodg.net    Telef. 991935157 1024D/B23B24A4 5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4 From jespinog en gmail.com Fri Jun 10 10:16:18 2011 From: jespinog en gmail.com (=?ISO-8859-1?Q?Jes=FAs_Espino?=) Date: Fri, 10 Jun 2011 10:16:18 +0200 Subject: [Python-es] Mini evento python-es o python-madrid el 15 de Julio. Message-ID: Hola a todos: El 15 de Julio hay unas aulas reservadas en la universidad Carlos III de Madrid (Leganés), y queremos organizar un evento de python, la idea es ir todo el día (empezar a las 10 de la mañana y terminar a las 6 de la tarde) y constantemente charlas sobre python en 2 aulas paralelas. La idea seria 1 aula para charlas "básicas" y otra para charlas avanzadas. Una cosa importante que necesitamos son ponentes y me gustaría saber si alguien se animaría a dar alguna charla. La idea son bloques de 45 minutos/1 hora, aunque se pueden dar charlas mas largas si alguien se ve con ganas y el tema escogido lo requiere. Por ahora no tenemos un listado de sugerencias de charlas, pero estamos trabajando en ello, así que si alguien se anima a proponer algo de lo que quiera hablar o de lo que quieran que le hablen, sera de agradecer. Un saludo. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From ydmilan en estudiantes.uci.cu Fri Jun 10 18:15:20 2011 From: ydmilan en estudiantes.uci.cu (=?utf-8?Q?Yixander_de_la_Paz_Mil=C3=A1n?=) Date: Fri, 10 Jun 2011 12:15:20 -0400 (CDT) Subject: [Python-es] importar modulos de django In-Reply-To: <530671694.15756581307722412063.JavaMail.root@ucimail4.uci.cu> Message-ID: <1911212504.15757921307722520111.JavaMail.root@ucimail4.uci.cu> buenos dias a todos: tengo un proyecto Django, con un demonio interno, cuando importo los distintos módulos(aplicaciones) a la clase del demonio y ejecuto este por consola el demonio no se logra levantar, esto es un ejemplo del error que lanza: ejemplo: #python script.py Traceback (most recent call last): File "pgData_Deamon.py", line 7, in from Reporte.apps.configuracion.configuration import configuration ImportError: No module named Reporte.apps.configuracion.configuration saludos From jcaballero.hep en gmail.com Fri Jun 10 19:43:04 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Fri, 10 Jun 2011 13:43:04 -0400 Subject: [Python-es] importar modulos de django In-Reply-To: <1911212504.15757921307722520111.JavaMail.root@ucimail4.uci.cu> References: <530671694.15756581307722412063.JavaMail.root@ucimail4.uci.cu> <1911212504.15757921307722520111.JavaMail.root@ucimail4.uci.cu> Message-ID: > ImportError: No module named Reporte.apps.configuracion.configuration > > no existe .../Reporte/apps/configuracion/configuracion.py o no lo encuentra. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Fri Jun 10 23:45:21 2011 From: kikocorreoso en gmail.com (Kiko) Date: Fri, 10 Jun 2011 23:45:21 +0200 Subject: [Python-es] importar modulos de django In-Reply-To: References: <530671694.15756581307722412063.JavaMail.root@ucimail4.uci.cu> <1911212504.15757921307722520111.JavaMail.root@ucimail4.uci.cu> Message-ID: 2011/6/10 Jose Caballero > > ImportError: No module named Reporte.apps.configuracion.configuration >> >> > > configuration está dentro de Reporte.apps.configuracion.configuration? o está dentro de Reporte.apps.configuracion? Mayúsculas y minúsculas están como toca? Tu módulo está en el directorio raiz donde lanzas tu script o en el pythonpath? [1] Cualquiera de esas cosas puede provocar que no encuentre lo que le dices que tiene que encontrar. [1] http://docs.python.org/tutorial/modules.html (apartado 6.1.2) ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From olemis+py en gmail.com Mon Jun 13 14:10:01 2011 From: olemis+py en gmail.com (Olemis Lang (Simelix)) Date: Mon, 13 Jun 2011 08:10:01 -0400 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_utilizar_la_variable_controller?= =?iso-8859-1?q?_en_PyRoutes?= In-Reply-To: References: Message-ID: Hola a tod en s ! Recientemente he utilizado el módulo `routes` y he notado algo que, a mi entender, es un poco raro; especialmente después de leer la documentación. Allí mencionan ejemplos como el siguiente. Sin embargo, cuando se ejecuta este fragmento no se detecta la ruta {{{ #!python >>> mapper = Mapper() >>> mapper.connect('test', '/{controller}/{action}') >>> >>> print mapper.routematch(environ=environ) None }}} Por otra parte , si se cambia ligeramente el código anterior entonces sí funciona. {{{ #!python mapper = Mapper() mapper.connect('test', '/hello/{action}', controller='hello') mapper.routematch(environ=environ) }}} Q:  - Alguien sabe pq es q no c puede usar la variable    `controller` en la regla de las rutas ? Gracias por adelantado -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: Uso local de Dragonfly para depurar sitios web con Opera - http://simelo-es.blogspot.com/2011/06/uso-local-de-dragonfly-para-depurar.html From py en ch3m4.org Tue Jun 14 01:35:18 2011 From: py en ch3m4.org (Chema Cortes) Date: Tue, 14 Jun 2011 01:35:18 +0200 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_utilizar_la_variable_controller?= =?iso-8859-1?q?_en_PyRoutes?= In-Reply-To: References: Message-ID: <4DF69EB6.3080207@ch3m4.org> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 13/06/11 14:10, Olemis Lang (Simelix) escribió: > Hola a tod en s ! > > Recientemente he utilizado el módulo `routes` y he notado algo > que, a mi entender, es un poco raro; especialmente después de > leer la documentación. Allí mencionan ejemplos como el siguiente. > Sin embargo, cuando se ejecuta este fragmento no se detecta > la ruta > > {{{ > #!python > >>>> mapper = Mapper() >>>> mapper.connect('test', '/{controller}/{action}') >>>> >>>> print mapper.routematch(environ=environ) > None > > }}} En el Mapper() no especificas los controladores (ni tampoco el directorio de los controladores). Por defecto, si no encuentra el controlador adecuado siempre devuelve None. Ése es también el motivo por el que el código que pones luego funciona al especificar un controlador. Para solucionarlo, tienes dos opciones: 1.- pasar a Mapper() la ruta (absoluta) a los controladores mapper = Mapper(directory='/ruta/a/los/controllers'] 2.- pasar a Mapper() una función controler_scan que devuelva una lista de controladores Por ejemplo, en el segundo caso sería algo así: def controller_scan(directory=None): return ['controller'] mapper = Mapper(controller_scan=controller_scan) > > > Por otra parte , si se cambia ligeramente el código anterior entonces > sí funciona. > > {{{ > #!python > > mapper = Mapper() > mapper.connect('test', '/hello/{action}', controller='hello') > > mapper.routematch(environ=environ) > > }}} > > Q: > - Alguien sabe pq es q no c puede usar la variable > `controller` en la regla de las rutas ? > > Gracias por adelantado > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJN9p6wAAoJEFdWyBWwhL4FgWsIALkbM6oOoh7xsJMLhyA4cyri jxoXmY/70AR+Jfrjtho1nauHNaZ03NoDs9Yzf0bEKingGUhLXLnx8ERiSxeezx8v 9MeO27ytKgJsqBKRKP5q3+X/OYDXL5RLxDqgsyI8N1Y/KxKCxxh15BklvgDQPjNE O/b8RuvxfpjRSKzoY0lFa1hFCsjj/KtfwO8LTSA0vb14Rgnn2I5Ql9tcQCKPkchv 1OkIPNoPFoCAHjC1bsr/7RYtLcMGdKY9w4xGwGYXR74QrfqMY+w7S1Lr0rZe9R+e Opn3ipm+RiS5DM/giylduFkqGLmOPEKVPCykZVYfSN4xOcXQQxi0ZuRCS1K0/DM= =Tc0r -----END PGP SIGNATURE----- From olemis+py en gmail.com Tue Jun 14 02:42:45 2011 From: olemis+py en gmail.com (Olemis Lang (Simelix)) Date: Mon, 13 Jun 2011 20:42:45 -0400 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_utilizar_la_variable_controller?= =?iso-8859-1?q?_en_PyRoutes?= In-Reply-To: <4DF69EB6.3080207@ch3m4.org> References: <4DF69EB6.3080207@ch3m4.org> Message-ID: 2011/6/13 Chema Cortes : > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > El 13/06/11 14:10, Olemis Lang (Simelix) escribió: >> Hola a tod en s ! >> >> Recientemente he utilizado el módulo `routes` y he notado algo >> que, a mi entender, es un poco raro; especialmente después de >> leer la documentación. Allí mencionan ejemplos como el siguiente. >> Sin embargo, cuando se ejecuta este fragmento no se detecta >> la ruta >> >> {{{ >> #!python >> >>>>> mapper = Mapper() >>>>> mapper.connect('test', '/{controller}/{action}') >>>>> >>>>> print mapper.routematch(environ=environ) >> None >> >> }}} > > En el Mapper() no especificas los controladores (ni tampoco el > directorio de los controladores). Por defecto, si no encuentra el > controlador adecuado siempre devuelve None. Ése es también el motivo por > el que el código que pones luego funciona al especificar un controlador. > > Para solucionarlo, tienes dos opciones: > > 1.- pasar a Mapper() la ruta (absoluta) a los controladores > > mapper = Mapper(directory='/ruta/a/los/controllers'] > > > 2.- pasar a Mapper() una función controler_scan que devuelva una lista > de controladores > > > Por ejemplo, en el segundo caso sería algo así: > > def controller_scan(directory=None): >        return ['controller'] > > mapper = Mapper(controller_scan=controller_scan) > Interesante respuesta ... lo pruebo ahora mismo ... ;) -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: Uso local de Dragonfly para depurar sitios web con Opera - http://simelo-es.blogspot.com/2011/06/uso-local-de-dragonfly-para-depurar.html From olemis+py en gmail.com Tue Jun 14 16:14:51 2011 From: olemis+py en gmail.com (Olemis Lang (Simelix)) Date: Tue, 14 Jun 2011 10:14:51 -0400 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_utilizar_la_variable_controller?= =?iso-8859-1?q?_en_PyRoutes?= In-Reply-To: References: <4DF69EB6.3080207@ch3m4.org> Message-ID: 2011/6/13 Olemis Lang (Simelix) : > 2011/6/13 Chema Cortes : >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> El 13/06/11 14:10, Olemis Lang (Simelix) escribió: >>> Hola a tod en s ! >>> >>> Recientemente he utilizado el módulo `routes` y he notado algo >>> que, a mi entender, es un poco raro; especialmente después de >>> leer la documentación. Allí mencionan ejemplos como el siguiente. >>> Sin embargo, cuando se ejecuta este fragmento no se detecta >>> la ruta >>> >>> {{{ >>> #!python >>> >>>>>> mapper = Mapper() >>>>>> mapper.connect('test', '/{controller}/{action}') >>>>>> >>>>>> print mapper.routematch(environ=environ) >>> None >>> >>> }}} >> >> En el Mapper() no especificas los controladores (ni tampoco el >> directorio de los controladores). Por defecto, si no encuentra el >> controlador adecuado siempre devuelve None. Ése es también el motivo por >> el que el código que pones luego funciona al especificar un controlador. >> Pues sí ... esa es la razón . Gracias por la respuesta ! -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: El misterio de la variable controller en la definición de rutas - http://simelo-es.blogspot.com/2011/06/el-misrterio-de-la-variable-controller.html From pepe en diselpro.com Thu Jun 16 18:18:37 2011 From: pepe en diselpro.com (Pepe Aracil) Date: Thu, 16 Jun 2011 18:18:37 +0200 Subject: [Python-es] Parchear en caliente. Message-ID: Hola lista. Estoy haciendo un desarrollo con gevent http://www.gevent.org/ El caso es que gevent permite tener un backdoor (linea de comandos python por telnet) mediante el cual puedo manipular cualquier objeto del proceso python en tiempo de ejecución. Lo que pretendo es poder parchear metodos de instancias en tiempo de ejecución. Por ejemplo: class C(object): def f(self): print "version 1" c = C() c.f() >>> "version 1" def f1(self): print "version 2" c.f = f1() c.f() >>> TypeError: f1() takes exactly 1 argument (0 given) El caso es que c.f sigue siendo una función y no un "bound method" que es lo que quiero que sea. Se puede simular un bound method con un objeto del tipo functools.partial, pero me gustaria saber si existe la posibilidad de convertir una funcion a "bound method". Gracias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Thu Jun 16 19:25:05 2011 From: listas en soft-com.es (Oswaldo) Date: Thu, 16 Jun 2011 19:25:05 +0200 Subject: [Python-es] Parchear en caliente. In-Reply-To: References: Message-ID: <4DFA3C71.30608@soft-com.es> El 16/06/2011 18:18, Pepe Aracil escribió: > Hola lista. > > Estoy haciendo un desarrollo con gevent http://www.gevent.org/ > El caso es que gevent permite tener un backdoor (linea de comandos > python por telnet) mediante el cual puedo manipular cualquier objeto del > proceso python en tiempo de ejecución. > Lo que pretendo es poder parchear metodos de instancias en tiempo de > ejecución. Por ejemplo: > > class C(object): > def f(self): > print "version 1" > > c = C() > c.f() >> >> "version 1" > > def f1(self): > print "version 2" > > c.f = f1() > > c.f() > >> >> TypeError: f1() takes exactly 1 argument (0 given) > > El caso es que c.f sigue siendo una función y no un "bound method" que > es lo que quiero que sea. > Se puede simular un bound method con un objeto del tipo > functools.partial, pero me gustaria saber si existe la posibilidad de > convertir una funcion a "bound method". > >>> c.f = f1.__get__(c) >>> c.f() version 2 Saludos, -- Oswaldo Hernández From pepe en diselpro.com Thu Jun 16 23:47:59 2011 From: pepe en diselpro.com (Pepe Aracil) Date: Thu, 16 Jun 2011 23:47:59 +0200 Subject: [Python-es] Parchear en caliente. In-Reply-To: <4DFA3C71.30608@soft-com.es> References: <4DFA3C71.30608@soft-com.es> Message-ID: Hola Oswaldo. Python nunca deja de sorprenderme!! Gracias. El 16 de junio de 2011 19:25, Oswaldo escribió: > El 16/06/2011 18:18, Pepe Aracil escribió: > > Hola lista. >> >> Estoy haciendo un desarrollo con gevent http://www.gevent.org/ >> El caso es que gevent permite tener un backdoor (linea de comandos >> python por telnet) mediante el cual puedo manipular cualquier objeto del >> proceso python en tiempo de ejecución. >> Lo que pretendo es poder parchear metodos de instancias en tiempo de >> ejecución. Por ejemplo: >> >> class C(object): >> def f(self): >> print "version 1" >> >> c = C() >> c.f() >> >>> >> "version 1" >>> >> >> def f1(self): >> print "version 2" >> >> c.f = f1() >> >> c.f() >> >> >> TypeError: f1() takes exactly 1 argument (0 given) >>> >> >> El caso es que c.f sigue siendo una función y no un "bound method" que >> es lo que quiero que sea. >> Se puede simular un bound method con un objeto del tipo >> functools.partial, pero me gustaria saber si existe la posibilidad de >> convertir una funcion a "bound method". >> >> > > >>> c.f = f1.__get__(c) > >>> c.f() > version 2 > > > Saludos, > -- > Oswaldo Hernández > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From barceloch en gmail.com Fri Jun 17 16:20:47 2011 From: barceloch en gmail.com (=?ISO-8859-1?Q?Yunior_Barcel=F3_Ch=E1vez?=) Date: Fri, 17 Jun 2011 16:20:47 +0200 Subject: [Python-es] Nuevo en la lista! (cuestion sobre Django) Message-ID: Hola a todos. Acabo de subcribirme a la lista, me parece genial, no tengo mucha experiencia en python, pero espero enrriqueser mis conocimientos con la ayuda de ustedes, y luego contribuir con los que comienzan a aprender. Bueno, actualmente estoy intentando aprender a desarrollar sitios web, utilizando Django. así a la ligera tengo una pregunta. ¿Es mejor usar el sistemas de plantillas de Djando o utilizar Jinja? ¿Qué me recomiendan? Tengo varias preguntas pero bueno, una a la vez :) Gracias de antemano. From lasizoillo en gmail.com Fri Jun 17 17:24:37 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Fri, 17 Jun 2011 17:24:37 +0200 Subject: [Python-es] Nuevo en la lista! (cuestion sobre Django) In-Reply-To: References: Message-ID: El día 17 de junio de 2011 16:20, Yunior Barceló Chávez escribió: > Hola a todos. > Acabo de subcribirme a la lista, me parece genial, no tengo mucha > experiencia en python, pero espero enrriqueser mis conocimientos con > la ayuda de ustedes, y luego contribuir con los que comienzan a > aprender. > > Bueno, actualmente estoy intentando aprender a desarrollar sitios web, > utilizando Django. > así a la ligera tengo una pregunta. > ¿Es mejor usar el sistemas de plantillas de Djando o utilizar Jinja? > ¿Qué me recomiendan? > > Tengo varias preguntas pero bueno, una a la vez :) > > Gracias de antemano. El desarrollador de Jinja está trabajando este GSoC para que las plantillas de Django implementen las optimizaciones que ya realizó a las Jinja. Así que si vas a usar django no pasaría demasiado tiempo preocupándome por las plantillas, dentro de nada no va a haber demasiada diferencia entre ellas. Eso si, en temas de compatibilidad hacia atrás las de django van a ser el referente. https://www.djangoproject.com/weblog/2011/apr/25/gsoc/ Saludos: Javi From anler86 en gmail.com Fri Jun 17 19:09:43 2011 From: anler86 en gmail.com (=?utf-8?Q?Anler_Hern=C3=A1ndez_Peral?=) Date: Fri, 17 Jun 2011 19:09:43 +0200 Subject: [Python-es] Nuevo en la lista! (cuestion sobre Django) In-Reply-To: References: Message-ID: <10137A25-5735-4C04-9432-986C92FCF86F@gmail.com> Te aconsejo que aprendas primero el de django, es muy sencillo aunque puede llegar a parecer bastante restrictivo pero cuando estés inmerso en el HTML lo vas a agradecer. Ademas jinja se parece mucho por lo que el salto de uno a otro es prácticamente trivial. Saludos GN-Quantum El 17/06/2011, a las 17:24, lasizoillo escribió: > El día 17 de junio de 2011 16:20, Yunior Barceló Chávez > escribió: >> Hola a todos. >> Acabo de subcribirme a la lista, me parece genial, no tengo mucha >> experiencia en python, pero espero enrriqueser mis conocimientos con >> la ayuda de ustedes, y luego contribuir con los que comienzan a >> aprender. >> >> Bueno, actualmente estoy intentando aprender a desarrollar sitios web, >> utilizando Django. >> así a la ligera tengo una pregunta. >> ¿Es mejor usar el sistemas de plantillas de Djando o utilizar Jinja? >> ¿Qué me recomiendan? >> >> Tengo varias preguntas pero bueno, una a la vez :) >> >> Gracias de antemano. > > El desarrollador de Jinja está trabajando este GSoC para que las > plantillas de Django implementen las optimizaciones que ya realizó a > las Jinja. Así que si vas a usar django no pasaría demasiado tiempo > preocupándome por las plantillas, dentro de nada no va a haber > demasiada diferencia entre ellas. Eso si, en temas de compatibilidad > hacia atrás las de django van a ser el referente. > > https://www.djangoproject.com/weblog/2011/apr/25/gsoc/ > > Saludos: > > Javi > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ From quiquepladur en yahoo.es Sun Jun 19 19:03:45 2011 From: quiquepladur en yahoo.es (enrique valls dolcet) Date: Sun, 19 Jun 2011 18:03:45 +0100 (BST) Subject: [Python-es] oRe: Novato Message-ID: <311884.95701.qm@web25608.mail.ukl.yahoo.com> Hola y muchas gracias por adelantado,mi nombre es Quique,soy totalmente profano en cuestiones de programación,he.des cargado el.programa desde python.es y me baja en archivo comprimido,no se como abrirlo,os pido consejo sobre Lo que debería hacer para poderme iniciar en este intrigante y espero que apasionante mundo.Muchas gracias. El vie 17 de jun 2011 a las 17:24 CEST lasizoillo escribió: >El día 17 de junio de 2011 16:20, Yunior Barceló Chávez > escribió: >> Hola a todos. >> Acabo de subcribirme a la lista, me parece genial, no tengo mucha >> experiencia en python, pero espero enrriqueser mis conocimientos con >> la ayuda de ustedes, y luego contribuir con los que comienzan a >> aprender. >> >> Bueno, actualmente estoy intentando aprender a desarrollar sitios web, >> utilizando Django. >> así a la ligera tengo una pregunta. >> ¿Es mejor usar el sistemas de plantillas de Djando o utilizar Jinja? >> ¿Qué me recomiendan? >> >> Tengo varias preguntas pero bueno, una a la vez :) >> >> Gracias de antemano. > >El desarrollador de Jinja está trabajando este GSoC para que las >plantillas de Django implementen las optimizaciones que ya realizó a >las Jinja. Así que si vas a usar django no pasaría demasiado tiempo >preocupándome por las plantillas, dentro de nada no va a haber >demasiada diferencia entre ellas. Eso si, en temas de compatibilidad >hacia atrás las de django van a ser el referente. > >https://www.djangoproject.com/weblog/2011/apr/25/gsoc/ > >Saludos: > >Javi >_______________________________________________ >Python-es mailing list >Python-es en python.org >http://mail.python.org/mailman/listinfo/python-es >FAQ: http://python-es-faq.wikidot.com/ From maengora en gmail.com Sun Jun 19 19:43:55 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Sun, 19 Jun 2011 12:43:55 -0500 Subject: [Python-es] oRe: Novato In-Reply-To: <311884.95701.qm@web25608.mail.ukl.yahoo.com> References: <311884.95701.qm@web25608.mail.ukl.yahoo.com> Message-ID: Hola Quique y Bienvenido. Me imagino que entraste a este link http://python.org/download/releases/3.2/ donde se ofrecen varias opciones entre ellas la comprimida que mencionas la cual me imagino que si no sabes abrir debes estar hablando del Python-3.2.tar.bz2, y supongo (por lo que dices) que tu plataforma es windows ya que si fuera linux sabrías que se trata de un archivo en formato bzip. Te sugiero lo siguiente para que no te compliques la vida. Mira un poco más abajo de donde se encuentra el link que elegiste y descargate el que dice Windows x86 MSI Installer (3.2) o el Windows X86-64 MSI Installer (3.2) según sea tu plataforma. Después de instalarlo búscate un buen tutorial. Aquí en esta lista se ha comentado con insistencia cuál es el mejor tutorial; realmente el 99% de los que han/hemos recomendado son muy buenos para empezar; Yo personalmente te recomiendo el de Python para Todos o el de Introducción a la programación con Python (marmota) o la documentación oficial http://docs.python.org/tutorial/ y te das un paseo por esta lista para que encuentres más referencia. Mucha suerte y bienvenido a este maravilloso lenguaje de programación El 19 de junio de 2011 12:03, enrique valls dolcet escribió: > Hola y muchas gracias por adelantado,mi nombre es Quique,soy totalmente > profano en cuestiones de programación,he.des cargado el.programa desde > python.es y me baja en archivo comprimido,no se como abrirlo,os pido > consejo sobre Lo que debería hacer para poderme iniciar en este intrigante y > espero que apasionante mundo.Muchas gracias. > > El vie 17 de jun 2011 a las 17:24 CEST lasizoillo escribió: > > >El día 17 de junio de 2011 16:20, Yunior Barceló Chávez > > escribió: > >> Hola a todos. > >> Acabo de subcribirme a la lista, me parece genial, no tengo mucha > >> experiencia en python, pero espero enrriqueser mis conocimientos con > >> la ayuda de ustedes, y luego contribuir con los que comienzan a > >> aprender. > >> > >> Bueno, actualmente estoy intentando aprender a desarrollar sitios web, > >> utilizando Django. > >> así a la ligera tengo una pregunta. > >> ¿Es mejor usar el sistemas de plantillas de Djando o utilizar Jinja? > >> ¿Qué me recomiendan? > >> > >> Tengo varias preguntas pero bueno, una a la vez :) > >> > >> Gracias de antemano. > > > >El desarrollador de Jinja está trabajando este GSoC para que las > >plantillas de Django implementen las optimizaciones que ya realizó a > >las Jinja. Así que si vas a usar django no pasaría demasiado tiempo > >preocupándome por las plantillas, dentro de nada no va a haber > >demasiada diferencia entre ellas. Eso si, en temas de compatibilidad > >hacia atrás las de django van a ser el referente. > > > >https://www.djangoproject.com/weblog/2011/apr/25/gsoc/ > > > >Saludos: > > > >Javi > >_______________________________________________ > >Python-es mailing list > >Python-es en python.org > >http://mail.python.org/mailman/listinfo/python-es > >FAQ: http://python-es-faq.wikidot.com/ > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Mon Jun 20 12:46:10 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Mon, 20 Jun 2011 06:16:10 -0430 Subject: [Python-es] Detectar una tecla Message-ID: ¡Hola! ¿Qué función en Python me permite detectar una tecla para controlar un proceso con ella? Por ejemplo, para colocar algo como *** ¿Está de acuerdo, í, o? o *** Presione para continuar. De mis tiempos con Pascal recuerdo la función ReadKey: Ej: repeat proceso a realizar tecla=ReadKey until tecla in ['S', 's', 'N', 'n'] Gracias. Douglas ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From javier.collado en gmail.com Mon Jun 20 13:37:27 2011 From: javier.collado en gmail.com (Javier Collado) Date: Mon, 20 Jun 2011 13:37:27 +0200 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: Hola, El día 20 de junio de 2011 12:46, Douglas Jiménez escribió: > De mis tiempos con Pascal recuerdo la función ReadKey: En C la función equivalente a ReadKey se llama getch. En python tenemos: - curses.window.getch (linux) - msvcrt.getch (windows) Para linux, existen otras soluciones basadas en termios cuando no necesitas programar en curses: http://snippets.dzone.com/posts/show/915 http://love-python.blogspot.com/2010/03/getch-in-python-get-single-character.html Un saludo, Javier From dougjim en gmail.com Mon Jun 20 13:57:44 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Mon, 20 Jun 2011 07:27:44 -0430 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: El 20 de junio de 2011 07:07, Javier Collado escribió: > Hola, > > El día 20 de junio de 2011 12:46, Douglas Jiménez > escribió: > > > De mis tiempos con Pascal recuerdo la función ReadKey: > > En C la función equivalente a ReadKey se llama getch. En python tenemos: > - curses.window.getch (linux) > - msvcrt.getch (windows) > Gracias, Javier. Sin embargo, por terminal intenté esto: >>> import curses >>> tecla = '' >>> while tecla == '': ... tecla = curses.window.getch() pero me da un error: Traceback (most recent call last): File "", line 2, in AttributeError: 'module' object has no attribute 'window' ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Mon Jun 20 14:44:09 2011 From: pych3m4 en gmail.com (Chema Cortes) Date: Mon, 20 Jun 2011 14:44:09 +0200 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: El día 20 de junio de 2011 12:46, Douglas Jiménez escribió: > ¡Hola! > > ¿Qué función en Python me permite detectar una tecla para controlar un > proceso con ella? Por ejemplo, para colocar algo como > > *** ¿Está de acuerdo, í, o? o  *** Presione para continuar. Prueba con esta receta: http://code.activestate.com/recipes/203830/ From javier.collado en gmail.com Mon Jun 20 15:15:50 2011 From: javier.collado en gmail.com (Javier Collado) Date: Mon, 20 Jun 2011 15:15:50 +0200 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: Hola, El día 20 de junio de 2011 13:57, Douglas Jiménez escribió: > Gracias, Javier. Sin embargo, por terminal intenté esto: .... > pero me da un error: Para utilizar curses hay que inicializar el terminal y asegurarse de dejarlo como estaba en el momento de terminar la aplicación (esto se puede hacer con curses.wrapper). Si decides utilizar curses, te recomiendo echarle un vistazo a la documentación: http://docs.python.org/library/curses.html O utilizar alguna librería de más alto nivel como urwid: http://excess.org/urwid/ En cualquier caso, un ejemplo más completo sería el siguiente: ---------------- import curses class App(object): def run(self): curses.wrapper(self.run_curses) def run_curses(self, window): window.addstr('Pulse una tecla para continuar...') window.getch() app = App() app.run() ---------------- Un saludo, Javier From dougjim en gmail.com Mon Jun 20 15:49:14 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Mon, 20 Jun 2011 09:19:14 -0430 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: El 20 de junio de 2011 08:45, Javier Collado escribió: > Hola, > > El día 20 de junio de 2011 13:57, Douglas Jiménez > escribió: > > Gracias, Javier. Sin embargo, por terminal intenté esto: > > .... > > > pero me da un error: > > Para utilizar curses hay que inicializar el terminal ... Quizás si explico lo que quiero hacer se les puede hacer más fácil orientarme. Quiero escribir algo parecido a la instrucción input para un niño de tres años. Él se sabe todas las letras del alfabeto, pero no sabe leer (por supuesto). La idea es hacer que vaya escribiendo letras en secuencia, dirigido por un adulto, hasta que tenga una palabra, luego de lo cual al presionar pasará algo relacionado con el significado de la palabra (lo cual sé programar). Las letras se le aparecerán en un formato grande y en una ventana ad-hoc, donde sucederá el evento ya comentado. Por eso necesito una rutina que se quede esperando la letra para luego ponerla en cierto lugar de la ventana. La palabra, por supuesto, la formo por concatenación de las letras. Gracias. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From barceloch en gmail.com Mon Jun 20 15:50:22 2011 From: barceloch en gmail.com (=?ISO-8859-1?Q?Yunior_Barcel=F3_Ch=E1vez?=) Date: Mon, 20 Jun 2011 15:50:22 +0200 Subject: [Python-es] Nuevo en la lista! (cuestion sobre Django) In-Reply-To: <10137A25-5735-4C04-9432-986C92FCF86F@gmail.com> References: <10137A25-5735-4C04-9432-986C92FCF86F@gmail.com> Message-ID: ok gracias por sus respuestas amigos. El 17/06/11, Anler Hernández Peral escribió: > Te aconsejo que aprendas primero el de django, es muy sencillo aunque puede > llegar a parecer bastante restrictivo pero cuando estés inmerso en el HTML > lo vas a agradecer. Ademas jinja se parece mucho por lo que el salto de uno > a otro es prácticamente trivial. > > Saludos > > GN-Quantum > > El 17/06/2011, a las 17:24, lasizoillo escribió: > >> El día 17 de junio de 2011 16:20, Yunior Barceló Chávez >> escribió: >>> Hola a todos. >>> Acabo de subcribirme a la lista, me parece genial, no tengo mucha >>> experiencia en python, pero espero enrriqueser mis conocimientos con >>> la ayuda de ustedes, y luego contribuir con los que comienzan a >>> aprender. >>> >>> Bueno, actualmente estoy intentando aprender a desarrollar sitios web, >>> utilizando Django. >>> así a la ligera tengo una pregunta. >>> ¿Es mejor usar el sistemas de plantillas de Djando o utilizar Jinja? >>> ¿Qué me recomiendan? >>> >>> Tengo varias preguntas pero bueno, una a la vez :) >>> >>> Gracias de antemano. >> >> El desarrollador de Jinja está trabajando este GSoC para que las >> plantillas de Django implementen las optimizaciones que ya realizó a >> las Jinja. Así que si vas a usar django no pasaría demasiado tiempo >> preocupándome por las plantillas, dentro de nada no va a haber >> demasiada diferencia entre ellas. Eso si, en temas de compatibilidad >> hacia atrás las de django van a ser el referente. >> >> https://www.djangoproject.com/weblog/2011/apr/25/gsoc/ >> >> Saludos: >> >> Javi >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > From javier.collado en gmail.com Mon Jun 20 16:03:32 2011 From: javier.collado en gmail.com (Javier Collado) Date: Mon, 20 Jun 2011 16:03:32 +0200 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: Hola, El día 20 de junio de 2011 15:49, Douglas Jiménez escribió: > Quizás si explico lo que quiero hacer se les puede hacer más fácil > orientarme. Quiero escribir algo parecido a la instrucción input para un > niño de tres años. Él se sabe todas las letras del alfabeto, pero no sabe > leer (por supuesto). La idea es hacer que vaya escribiendo letras en > secuencia, dirigido por un adulto, hasta que tenga una palabra, luego de lo > cual al presionar pasará algo relacionado con el significado de la > palabra (lo cual sé programar). > > Las letras se le aparecerán en un formato grande y en una ventana ad-hoc, > donde sucederá el evento ya comentado. Por eso necesito una rutina que se > quede esperando la letra para luego ponerla en cierto lugar de la ventana. > La palabra, por supuesto, la formo por concatenación de las letras. Quizá en lugar de desarrollar la aplicación para consola, sea más práctico hacerlo para un entorno de ventanas en cualquiera de los frameworks disponibles: gtk, qt, wxwindows, etc. Por ejemplo, en gtk, que es el que conozco mejor, no habría problema en capturar los eventos de teclado y, además, podrías controlar fácilmente el tamaño de letra utilizado que sería uno de los requisitos de acuerdo con la explicación. Un saludo, Javier From barceloch en gmail.com Mon Jun 20 17:14:51 2011 From: barceloch en gmail.com (=?ISO-8859-1?Q?Yunior_Barcel=F3_Ch=E1vez?=) Date: Mon, 20 Jun 2011 17:14:51 +0200 Subject: [Python-es] =?iso-8859-1?q?Pr=E1ticando_Django_=28mi_primer_teste?= =?iso-8859-1?q?o=29_=3A=29?= Message-ID: Hola amigos de la lista: Como antes dije ando intentando aprender django, así que luego de leer un poco sobre el, ya se me ha ocurrido hacer algo para ir práticando y aprendiendo con sus ayuda. bien, lo que tengo en mente es guardar en la base de datos un listado de personas y luego motrar informacion de esa db en un ejemplo sencillo de plantilla web. seria algo como: [IMAGEN DE Nombre y Apellidos: Pepe Rodriguez Soza LA Persona] Edad: 27 años Ocupación: Trabaja **Aqui debe salirme una lista de selecion** Empresa: Etecta Cargo: Asesor de telecomunicaciones E-mail: pepe en mail.com Telef: 874512 [IMAGEN DE Nombre y Apellidos: Claudia Herrera Perez LA Persona] Edad: 18 años Ocupación: Estudia **Aqui debe salirme una lista de selecion** Escuela: Universidad de las Villas E-mail: No tiene Telef:4512365 Bien, algo así es lo que quiero hacer. Este es el modelo que intento hacer: from django.db import models class Persona(models.Model): nombre_completo = models.CharField(max_length=30, verbose_name='Nombre y Apellidos') edad = models.CharField(max_length=40, verbose_name='Edad') ocupacion = models.CharField(max_length=30, verbose_name='ocupacion') email = models.EmailField(blank=True, verbose_name='e-mail') telef = models.CharField(max_length=30, verbose_name='telef') def __unicode__(self): return u'%s'%(self.nombre_completo) pero está incompleto, y seguramente va mal jaja, ah! y ni remota idea tengo de como hacer para indicar la imagen de la persona, y estableciendo un tamaño maximo y minimo. me echan una mano? From sigilioso en gmail.com Mon Jun 20 17:52:39 2011 From: sigilioso en gmail.com (=?ISO-8859-1?Q?Christian_Felipe_=C1lvarez?=) Date: Mon, 20 Jun 2011 17:52:39 +0200 Subject: [Python-es] =?iso-8859-1?q?Pr=E1ticando_Django_=28mi_primer_teste?= =?iso-8859-1?q?o=29_=3A=29?= In-Reply-To: References: Message-ID: 2011/6/20 Yunior Barceló Chávez > > Hola amigos de la lista: Hola Yunior, > > Como antes dije ando intentando aprender django, así que luego de leer > un poco sobre el, ya se me ha ocurrido hacer algo para ir práticando y > aprendiendo con sus ayuda. > > bien, lo que tengo en mente es guardar en la base de datos un listado > de personas y luego motrar informacion de esa db en un ejemplo > sencillo de plantilla web. > > seria algo como: > > [IMAGEN DE    Nombre y Apellidos: Pepe Rodriguez Soza > LA  Persona]     Edad: 27 años >                        Ocupación: Trabaja **Aqui debe salirme una > lista de selecion** >                        Empresa: Etecta >                        Cargo: Asesor de telecomunicaciones >                         E-mail: pepe en mail.com >                        Telef: 874512 > > [IMAGEN DE       Nombre y Apellidos: Claudia Herrera Perez > LA  Persona]     Edad: 18 años >                       Ocupación: Estudia         **Aqui debe salirme > una lista de selecion** >                       Escuela: Universidad de las Villas >                       E-mail: No tiene >                       Telef:4512365 > > > Bien, algo así es lo que quiero hacer. > Este es el modelo que intento hacer: > > > from django.db import models > > class Persona(models.Model): >    nombre_completo = models.CharField(max_length=30, > verbose_name='Nombre y Apellidos') >    edad = models.CharField(max_length=40, verbose_name='Edad') >    ocupacion = models.CharField(max_length=30, verbose_name='ocupacion') >    email = models.EmailField(blank=True, verbose_name='e-mail') >    telef = models.CharField(max_length=30, verbose_name='telef') > >    def __unicode__(self): >        return u'%s'%(self.nombre_completo) > > pero está incompleto, y seguramente va mal jaja, ah! y ni remota idea > tengo de como hacer para indicar la imagen de la persona, y > estableciendo un tamaño maximo y minimo. > > me echan una mano? Django tiene un tipo de campo justo para eso que buscas: ImageField https://docs.djangoproject.com/en/dev/ref/models/fields/#imagefield Espero que te sirva. Saludos, > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ -- Christian From alexis.roda.villalonga en gmail.com Mon Jun 20 19:19:29 2011 From: alexis.roda.villalonga en gmail.com (Alexis Roda) Date: Mon, 20 Jun 2011 19:19:29 +0200 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: <4DFF8121.6080802@gmail.com> En/na Douglas Jiménez ha escrit: > Quizás si explico lo que quiero hacer se les puede hacer más fácil > orientarme. Quiero escribir algo parecido a la instrucción input para un > niño de tres años. Él se sabe todas las letras del alfabeto, pero no > sabe leer (por supuesto). La idea es hacer que vaya escribiendo letras > en secuencia, dirigido por un adulto, hasta que tenga una palabra, luego > de lo cual al presionar pasará algo relacionado con el > significado de la palabra (lo cual sé programar). > > Las letras se le aparecerán en un formato grande y en una ventana > ad-hoc, donde sucederá el evento ya comentado. Por eso necesito una > rutina que se quede esperando la letra para luego ponerla en cierto > lugar de la ventana. La palabra, por supuesto, la formo por > concatenación de las letras. Échale un vistazo a pygame (http://pygame.org), tal vez te sirva. Saludos From jcea en jcea.es Mon Jun 20 20:14:08 2011 From: jcea en jcea.es (Jesus Cea) Date: Mon, 20 Jun 2011 20:14:08 +0200 Subject: [Python-es] Duda sobre matplotlib y limites automaticos del eje "x" Message-ID: <4DFF8DF0.4070907@jcea.es> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hola a todos. Si ejecutamos este programa: """ import matplotlib.pyplot as plt i = [i for i in xrange(21)] plt.bar(i, i) plt.show() """ Obtendremos un gráfico de barras con un hueco al final. Experimentando con diferentes valores, determino que el problema es que matplotlib decide dividir el gráfico en "X" intervalos horizontales (en este caso, de 5 en 5 unidades), y le da igual que el último segmento se esté usando o no. Puedo cortar yo el gráfico en el sitio correcto mediante "plt.xlim()", pero no sé por qué tengo que preocuparme de estos detalles. Yo esperaría que matplotlib cortase en el sitio correcto. ¿Hay algún motivo para que no sea así?. Probad, por ejemplo, a cambiar el "xrange()" entre los valores 20 y 21, y comparad los gráficos generados... Mi versión de matplotlib es la 0.99.1.1. ¿Alguna idea, aparte de limitar el gráfico a mano con "plt.xlim()"?. - -- Jesus Cea Avion _/_/ _/_/_/ _/_/_/ jcea en jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/_/_/_/ . _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQCVAwUBTf+N8Jlgi5GaxT1NAQI7rgQAi5ev+cpw5/o74Ynp9pCPdMI6jFcQkn5j 4jcgousq7ivuSpVk4TzVXYDoYPQnQ0lNiQbVOtExUAic/Keq0rKjRID63qDKLKMT y3vgZnAVmLDUTqrY/sCKuygafiTVM0oiLXlrfRj9gMCl43wTat+w6FOXxS+WYBTV 68pf+koyWYw= =eqm/ -----END PGP SIGNATURE----- From davidmenhur en gmail.com Mon Jun 20 21:09:53 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Mon, 20 Jun 2011 21:09:53 +0200 Subject: [Python-es] [python-madrid] Duda sobre matplotlib y limites automaticos del eje "x" In-Reply-To: <4DFF8DF0.4070907@jcea.es> References: <4DFF8DF0.4070907@jcea.es> Message-ID: En la documentación dice: Make a bar plot with rectangles bounded by: left, left + width, bottom, bottom + height (left, right, bottom and top edges) En "Matplotlib for Python developpers" (no oficial) especifica: "As usual, everything is scaled and auto-adjusted to perfectly fit the figure area." En ningún sitio está especificado ese comportamiento. Por cierto, yo lo verifico en la versión 1.0.1 sobre Windows XP. En otro orden de cosas, en la versión 1 solucionaron muchos bugs, entre ellos unos cuantos memory leaks bastante incómodos (aunque todavía le quedan unos pocos). Actualizar es muy aconsejable. 2011/6/20 Jesus Cea : > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hola a todos. > > Si ejecutamos este programa: > > """ > import matplotlib.pyplot as plt > > i = [i for i in xrange(21)] > plt.bar(i, i) > plt.show() > """ > > Obtendremos un gráfico de barras con un hueco al final. Experimentando > con diferentes valores, determino que el problema es que matplotlib > decide dividir el gráfico en "X" intervalos horizontales (en este caso, > de 5 en 5 unidades), y le da igual que el último segmento se esté usando > o no. > > Puedo cortar yo el gráfico en el sitio correcto mediante "plt.xlim()", > pero no sé por qué tengo que preocuparme de estos detalles. Yo esperaría > que matplotlib cortase en el sitio correcto. ¿Hay algún motivo para que > no sea así?. > > Probad, por ejemplo, a cambiar el "xrange()" entre los valores 20 y 21, > y comparad los gráficos generados... > > Mi versión de matplotlib es la 0.99.1.1. > > ¿Alguna idea, aparte de limitar el gráfico a mano con "plt.xlim()"?. > > - -- > Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/ > jcea en jcea.es - http://www.jcea.es/     _/_/    _/_/  _/_/    _/_/  _/_/ > jabber / xmpp:jcea en jabber.org         _/_/    _/_/          _/_/_/_/_/ > .                              _/_/  _/_/    _/_/          _/_/  _/_/ > "Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/ > "My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/ > "El amor es poner tu felicidad en la felicidad de otro" - Leibniz > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iQCVAwUBTf+N8Jlgi5GaxT1NAQI7rgQAi5ev+cpw5/o74Ynp9pCPdMI6jFcQkn5j > 4jcgousq7ivuSpVk4TzVXYDoYPQnQ0lNiQbVOtExUAic/Keq0rKjRID63qDKLKMT > y3vgZnAVmLDUTqrY/sCKuygafiTVM0oiLXlrfRj9gMCl43wTat+w6FOXxS+WYBTV > 68pf+koyWYw= > =eqm/ > -----END PGP SIGNATURE----- > > -- > Grupo de usuarios de python ubicados en Madrid > http://groups.google.es/group/python-madrid > http://python-hispano.org/PythonMadrid > Para darte de baja del grupo envía un mensaje a python-madrid+unsubscribe en googlegroups.com > From a.porrua en gmail.com Tue Jun 21 09:27:06 2011 From: a.porrua en gmail.com (tny) Date: Tue, 21 Jun 2011 09:27:06 +0200 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: <1308641226.2219.1.camel@tny-desktop> El lun, 20-06-2011 a las 16:03 +0200, Javier Collado escribió: > Quizá en lugar de desarrollar la aplicación para consola, sea más > práctico hacerlo para un entorno de ventanas en cualquiera de los > frameworks disponibles: gtk, qt, wxwindows, etc. > > Por ejemplo, en gtk, que es el que conozco mejor, no habría problema > en capturar los eventos de teclado y, además, podrías controlar > fácilmente el tamaño de letra utilizado que sería uno de los > requisitos de acuerdo con la explicación. > Yo leyendo el hilo, estaba pensando que sería más práctico aún hacerlo en un entorno web. Y si te queda chulo incluso puedes sacar unos durillos extra. From dougjim en gmail.com Tue Jun 21 19:39:27 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Tue, 21 Jun 2011 13:09:27 -0430 Subject: [Python-es] Detectar una tecla In-Reply-To: References: Message-ID: El 20 de junio de 2011 09:33, Javier Collado escribió: > Hola, > > El día 20 de junio de 2011 15:49, Douglas Jiménez > escribió: > > Quizás si explico lo que quiero hacer .. > > Quizá en lugar de desarrollar la aplicación para consola, sea más > práctico hacerlo para un entorno de ventanas... > Un saludo, > Javier > Siguiendo la recomendación de Javier y por aquello de que "Unas cuantas horas de ensayo y error pueden ayudarte a ahorrar unos minutos de revisión de los manuales", llevo ya unas cuantas horas leyendo el manual de TKinter de Fredrik Lundh, que conseguí en la red. Así que esta parte del hilo creo que va dirigida a quienes manejen TKinter. Al incio del capítulo 7, en la página 19, Lundh da un ejemplo para manejar el evento de capturar pulsaciones del ratón. Lo corrí haciendo las pequeñas modificaciones necesarias para Python 3.1 y todo perfecto. Por supuesto que se me vino la idea de adaptarlo para las pulsaciones de teclado y lo convertí en esto: ************************************************ # Archivo: tecla.py from tkinter import * def main(): root = Tk() def callback(evento): print("La tecla es", evento.keycode) # Línea clave del programa frame = Frame(root, width=100, height=100) frame.bind("", callback) frame.pack() root.mainloop() ************************************************ con lo cual pretendo que al presionar una tecla se imprima algo relacionado con ella en el terminal (es la que llamé Línea clave del programa). En la línea clave ha cambiado .keycode por .keysym, keysym_num y otras cosas, pero nada de nada. Como es natural, necesito una orientación a este respecto. Es claro que no he entendido cómo manejar el evento . Gracias. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From stvzito en gmail.com Wed Jun 22 00:07:34 2011 From: stvzito en gmail.com (Manuel A. Estevez Fernandez) Date: Tue, 21 Jun 2011 17:07:34 -0500 Subject: [Python-es] Funciones Decoradores Message-ID: <4E011626.6030700@gmail.com> Hola que tal Estoy aprendiendo a utilizar las funciones decoradoras para llevar un log: Donde tengo la funcion decoradora: /def log(f): def inner(*args,**kwargs): if sincro_config.NIVEL_REGISTRO == 1: archivo_log_ = open(config.LOG_PATH,'a') archivo_log_.write('Ejecutando %s %s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime()))) archivo_log_.close() #return inner elif sincro_config.NIVEL_REGISTRO==2: archivo_log_ = open(config.LOG_PATH,'a') archivo_log_.write('Ejecutando %s %s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime()))) archivo_log_.write('Parametros Recibos: \n') for name,value in kwargs.items(): archivo_log_.write('Nombre: %s\t\tValor: %s\n'%(name,value)) archivo_log_.close() return inner/ ademas tengo la clase de la cual quiero ir guardando los sucesos: class Conexion: configuracion_ = '' cursor_ = '' bandera_ = '' conxn_ = '' def __init__(self,configuracion_): self.configuracion_ = configuracion_ return @log def get_pk(self,_tabla): [..] return lista_ @log def get_query_statement(self,_diccionario,_tabla,_operacion): [..] return cadena @log def connect(self): [..] return @log def get_informacion(self ,_tabla,_diccionario ): query_ = self.get_query_statement(_diccionario,_tabla,'select') resultado_ = self.cursor_.query(query_).dictresult() return resultado_ # Funcion que tiene como finalidad realizar una escritura en la base de datos # rebice un diccionario con los campos, el nombre de la tabla y el tipo de operacion # a realizar ( insert o update) @log def set_informacion(self,_diccionario,_tabla, _operacion): [ .. ] return success_ # Cierra la conexion con la base de datos @log def close(self): [ .. ] return Entonces cual realizo una prueba de mi clase con el siguiente script: from sincro_config import sincro_config import sincro_conexion db_ = sincro_conexion.Conexion(sincro_config) db_.connect() ventas_ = {'id_sucursal':2} query_ = db_.get_informacion('sucursales',ventas_) print query_ db_.close() El log marcado como 2 : me da el siguiente resultado: /Ejecutando connect 2011-06-20 18:30:42 Parametros Recibos: Ejecutando get_informacion 2011-06-20 18:30:42 Parametros Recibos: Ejecutando close 2011-06-20 18:30:42 Parametros Recibos: / Alguien me podría ayudar para poder guardar los parámetros que recibe la función que se va a ejecutar, y ademas la funcion get_informacion, dentro de su funcionamiento manda a llamar a la funcion get_query_statement y esta no se registra en el log ¿por qué? Saludos y gracias y por su atención. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From alexis.roda.villalonga en gmail.com Wed Jun 22 08:12:27 2011 From: alexis.roda.villalonga en gmail.com (Alexis Roda) Date: Wed, 22 Jun 2011 08:12:27 +0200 Subject: [Python-es] Funciones Decoradores In-Reply-To: <4E011626.6030700@gmail.com> References: <4E011626.6030700@gmail.com> Message-ID: <4E0187CB.9080005@gmail.com> En/na Manuel A. Estevez Fernandez ha escrit: > > Alguien me podría ayudar para poder guardar los parámetros que recibe la > función que se va a ejecutar, Si no me equivoco kwargs solamente tomará valor si llamas a la función con argumentos con nombre: In [1]: def prueba(*args, **kw) : ...: print args, kw ...: ...: In [2]: prueba(1) (1,) {} In [3]: prueba(foo=1) () {'foo': 1} In [4]: prueba(3,foo=1) (3,) {'foo': 1} > y ademas la funcion get_informacion, > dentro de su funcionamiento manda a llamar a la funcion > get_query_statement y esta no se registra en el log ¿por qué? El problema es que get_informacion no llega a ejecutarse. En el decorador te limitas a registrar la llamada en el log, pero no llamas a la función decorada. Saludos From pych3m4 en gmail.com Wed Jun 22 09:55:23 2011 From: pych3m4 en gmail.com (Chema Cortes) Date: Wed, 22 Jun 2011 09:55:23 +0200 Subject: [Python-es] Funciones Decoradores In-Reply-To: <4E0187CB.9080005@gmail.com> References: <4E011626.6030700@gmail.com> <4E0187CB.9080005@gmail.com> Message-ID: El día 22 de junio de 2011 08:12, Alexis Roda escribió: > Si no me equivoco kwargs solamente tomará valor si llamas a la función con > argumentos con nombre: Además tiene dos problemas: - Altera el nombre y el docstring de la función que decora - No tiene en cuenta los argumentos por defecto (si los hubiera) Lo primero se puede comprobar decorando dos veces una función, y se soluciona usando 'functools.wraps'; para lo segundo, lo más simple es usar 'inspect.getcallargs' import funtools import inspect from functools import wraps from inspect import def log(f): @functools.wraps(f) def inner(*args,**kwargs): #obtener argumentos "reales" callargs=inspect.getcallargs(f, *args, **kwargs) if sincro_config.NIVEL_REGISTRO == 1: archivo_log_ = open(config.LOG_PATH,'a') archivo_log_.write('Ejecutando %s %s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime()))) archivo_log_.close() elif sincro_config.NIVEL_REGISTRO==2: archivo_log_ = open(config.LOG_PATH,'a') archivo_log_.write('Ejecutando %s %s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime()))) archivo_log_.write('Parametros Recibos: \n') ### aquí cambia el bucle for name,value in callargs.items(): archivo_log_.write('Nombre: %s\t\tValor: %s\n'%(name,value)) archivo_log_.close() f(*args,**kwargs) ##### también faltaba llamar a la función para que haga su labor return inner From barceloch en gmail.com Thu Jun 30 16:57:14 2011 From: barceloch en gmail.com (=?ISO-8859-1?Q?Yunior_Barcel=F3_Ch=E1vez?=) Date: Thu, 30 Jun 2011 16:57:14 +0200 Subject: [Python-es] =?iso-8859-1?q?documentacion_en_espa=F1ol_para_Django?= =?iso-8859-1?q?1=2E3=3F?= Message-ID: Amigos! una pregunta, alguno tiene documentacion en español sobre django 1.3? tengo el pdf en ingles, está muy bueno, pero mi ingles es intermedio y me cuesta trabajo entender algunas cosas.... si alguno puede pasarme doc en español, le estaria muy agradecido.. saludos... From josemariavillalbacortazzo en hotmail.com Thu Jun 30 17:16:10 2011 From: josemariavillalbacortazzo en hotmail.com (jose villalba cortazzo) Date: Thu, 30 Jun 2011 15:16:10 +0000 Subject: [Python-es] =?iso-8859-1?q?documentacion_en_espa=F1ol_para_Django?= =?iso-8859-1?q?1=2E3=3F?= In-Reply-To: References: Message-ID: Yo lo estado estudiando pero por razones de estudios formales lo abandone un poco, pero te paso la dirección de grupo de usuarios de Django en Español django-es en googlegroups.com supongo que ahí te ayudaran a resolver tus problemas. > Date: Thu, 30 Jun 2011 16:57:14 +0200 > From: barceloch en gmail.com > To: python-es en python.org > Subject: [Python-es] documentacion en español para Django1.3? > > Amigos! una pregunta, alguno tiene documentacion en español sobre django 1.3? > tengo el pdf en ingles, está muy bueno, pero mi ingles es intermedio y > me cuesta trabajo entender algunas cosas.... > > si alguno puede pasarme doc en español, le estaria muy agradecido.. > > saludos... > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: