From maengora en gmail.com Thu Apr 1 02:41:21 2010 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Wed, 31 Mar 2010 20:41:21 -0400 Subject: [Python-es] Errno 9 Message-ID: Hola amig en s de la lista. Tengo un pequeño inconveniente con un código. Al tratar de crear privilegios desde un formulario creado con python (2.5) y las wx (también con MySQLdb py2.5) todo carga perfecto pero al hacer clic en el botón crear el log me arroja el siguiente mensaje: Traceback (most recent call last): File "C:\eduauxi\frm_usuarios.py", line 66, in crea_usuario for linea in f: IOError: [Errno 9] Bad file descriptor Se supone que el error aparece cuando el archivo NO existe o cuando hay problemas de lectura/escritura (bueno, eso creo) pero existen otros modulos en este mismo programa que si hacen la lectura/escritura del archivo. Necesito que me colaboren por fa. Este es el código: def crea_usuario(self,event): #init function #[266]Code event VwX...Don't modify[266]# #add your code here usuario = self.txt_usuario.GetValue() clave1 = self.txt_clave1.GetValue() clave2 = self.txt_clave2.GetValue() f = open("C:/eduauxi/wxpycl.txt","w") # Leo la línea en forma de arreglo for linea in f: xDato = linea.split(',') xHost=xDato[0] xUsuario=xDato[1] xPass=xDato[2] f.close() # Hago la conexión a la base de datos con los datos del archivo db = con.connect(host=xHost, user=xUsuario, passwd=xPass, db='mibdd') c = db.cursor() if not clave1==clave2: msg = wx.MessageDialog(self,"LA CLAVE NO COINCIDE","ERROR DE DATOS",wx.OK|wx.ICON_EXCLAMATION) msg.ShowModal() msg.Destroy() else: sql = c.execute('GRANT ALL PRIVILEGES ON mibdd.informe_academico TO "'+usuario+'"@"%" IDENTIFIED BY "'+clave+';') res = c.fetchone() sql1 = c.execute('flush privileges'); c.commit; return #end function -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pyarnau en gmail.com Thu Apr 1 09:50:23 2010 From: pyarnau en gmail.com (Arnau Sanchez) Date: Thu, 01 Apr 2010 09:50:23 +0200 Subject: [Python-es] Errno 9 In-Reply-To: References: Message-ID: <4BB4503F.4080102@gmail.com> On 01/04/10 02:41, Manuel Enrique González Ramírez wrote: > f = open("C:/eduauxi/wxpycl.txt","w") > > # Leo la línea en forma de arreglo > for linea in f: > xDato = linea.split(',') > xHost=xDato[0] > xUsuario=xDato[1] > xPass=xDato[2] > f.close() 1) ¿Abres el fichero para escritura ("w") pero luego lees de él? 2) El problema con el descriptor se debe a ese f.close() dentro del bucle de lectura. 3) desempaquetado de secuencias: http://pyspanishdoc.sourceforge.net/tut/node7.html#SECTION007300000000000000000 > xHost=xDato[0] > xUsuario=xDato[1] > xPass=xDato[2] xHost, xUsuario, xPass = xData (asumiendo que xData tiene tamaño 3, si no, se ajusta) arnau From euribates en gmail.com Thu Apr 1 09:53:27 2010 From: euribates en gmail.com (Juan Ignacio) Date: Thu, 1 Apr 2010 08:53:27 +0100 Subject: [Python-es] Errno 9 In-Reply-To: References: Message-ID: Estás abriendo el archivo en modo escritura El 01/04/2010 01:47, "Manuel Enrique González Ramírez" escribió: Hola amig en s de la lista. Tengo un pequeño inconveniente con un código. Al tratar de crear privilegios desde un formulario creado con python (2.5) y las wx (también con MySQLdb py2.5) todo carga perfecto pero al hacer clic en el botón crear el log me arroja el siguiente mensaje: Traceback (most recent call last): File "C:\eduauxi\frm_usuarios.py", line 66, in crea_usuario for linea in f: IOError: [Errno 9] Bad file descriptor Se supone que el error aparece cuando el archivo NO existe o cuando hay problemas de lectura/escritura (bueno, eso creo) pero existen otros modulos en este mismo programa que si hacen la lectura/escritura del archivo. Necesito que me colaboren por fa. Este es el código: def crea_usuario(self,event): #init function #[266]Code event VwX...Don't modify[266]# #add your code here usuario = self.txt_usuario.GetValue() clave1 = self.txt_clave1.GetValue() clave2 = self.txt_clave2.GetValue() f = open("C:/eduauxi/wxpycl.txt","w") # Leo la línea en forma de arreglo for linea in f: xDato = linea.split(',') xHost=xDato[0] xUsuario=xDato[1] xPass=xDato[2] f.close() # Hago la conexión a la base de datos con los datos del archivo db = con.connect(host=xHost, user=xUsuario, passwd=xPass, db='mibdd') c = db.cursor() if not clave1==clave2: msg = wx.MessageDialog(self,"LA CLAVE NO COINCIDE","ERROR DE DATOS",wx.OK|wx.ICON_EXCLAMATION) msg.ShowModal() msg.Destroy() else: sql = c.execute('GRANT ALL PRIVILEGES ON mibdd.informe_academico TO "'+usuario+'"@"%" IDENTIFIED BY "'+clave+';') res = c.fetchone() sql1 = c.execute('flush privileges'); c.commit; return #end function -- 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/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Thu Apr 1 11:30:21 2010 From: listas en soft-com.es (=?UTF-8?B?T3N3YWxkbyBIZXJuw6FuZGV6?=) Date: Thu, 01 Apr 2010 11:30:21 +0200 Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> Message-ID: <4BB467AD.9010801@soft-com.es> Boris Perez Canedo escribió: > Hola a todos, > > Estoy tratando de convertir mi aplicación en un servicio de windows > uando: win32serviceutil.ServiceFramework y luego utilizo py2exe para > compilar. ... > Si lo corro en IDE de python puedo ver que se mantiene corriendo y > funciona correctamente, no entiendo por qué no ocurre lo mismo cuando es > compilado, instalado e iniciado. Cuando ejecutas en el ide invocas directamente a tu funcion, ignorando todo el protocolo de servicios de windows. pywin32 trae un ejemplo de servicio (servidor y cliente), incluso te dice como instalarlo directamente sin necesidad de compilarlo. Sugerencias: . Elimina todos lor print que tengas en la aplicación. El servicio no tiene stdout/stderr, por lo que te pueden estar provocando errores. Utilizar el modulo logging para enviar los mensajes y errores a un archivo. . No intentes ejecutarlo desde una unidad de red (esto me volvió loco durante una temporada), windows se niega a se niega a ejecutar un servicio que no este en una unidad local. . Antes de compilar prueba a hacerlo funcionar como indica el ejemplo de pywin32. Suerte, -- Oswaldo Hernández From inf200523 en ucf.edu.cu Thu Apr 1 15:38:46 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Thu, 1 Apr 2010 09:38:46 -0400 (EDT) Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <4BB467AD.9010801@soft-com.es> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> Message-ID: <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> > Boris Perez Canedo escribió: >> Hola a todos, >> >> Estoy tratando de convertir mi aplicación en un servicio de windows >> uando: win32serviceutil.ServiceFramework y luego utilizo py2exe para >> compilar. > ... >> Si lo corro en IDE de python puedo ver que se mantiene corriendo y >> funciona correctamente, no entiendo por qué no ocurre lo mismo cuando es >> compilado, instalado e iniciado. > > Cuando ejecutas en el ide invocas directamente a tu funcion, ignorando > todo el protocolo de servicios de windows. > > pywin32 trae un ejemplo de servicio (servidor y cliente), incluso te > dice como instalarlo directamente sin necesidad de compilarlo. > > Sugerencias: > > . Elimina todos lor print que tengas en la aplicación. El servicio no > tiene stdout/stderr, por lo que te pueden estar provocando errores. > Utilizar el modulo logging para enviar los mensajes y errores a un archivo. > > . No intentes ejecutarlo desde una unidad de red (esto me volvió loco > durante una temporada), windows se niega a se niega a ejecutar un > servicio que no este en una unidad local. > > . Antes de compilar prueba a hacerlo funcionar como indica el ejemplo de > pywin32. > > > Suerte, > > --  Gracias  Oswaldo por las sugerencias. El ejemplo al que te refieres está en C:\Python26\Lib\site-packages\win32\Demos\service ? Es lo único que encontré sobre eso. Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Thu Apr 1 15:54:56 2010 From: listas en soft-com.es (=?UTF-8?B?T3N3YWxkbyBIZXJuw6FuZGV6?=) Date: Thu, 01 Apr 2010 15:54:56 +0200 Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> Message-ID: <4BB4A5B0.1030601@soft-com.es> Boris Perez Canedo escribió: > > Boris Perez Canedo escribió: > >> Hola a todos, > >> > >> Estoy tratando de convertir mi aplicación en un servicio de windows > >> uando: win32serviceutil.ServiceFramework y luego utilizo py2exe para > >> compilar. > > ... > >> Si lo corro en IDE de python puedo ver que se mantiene corriendo y > >> funciona correctamente, no entiendo por qué no ocurre lo mismo > cuando es > >> compilado, instalado e iniciado. > > > > Cuando ejecutas en el ide invocas directamente a tu funcion, ignorando > > todo el protocolo de servicios de windows. > > > > pywin32 trae un ejemplo de servicio (servidor y cliente), incluso te > > dice como instalarlo directamente sin necesidad de compilarlo. > > > > Sugerencias: > > > > . Elimina todos lor print que tengas en la aplicación. El servicio no > > tiene stdout/stderr, por lo que te pueden estar provocando errores. > > Utilizar el modulo logging para enviar los mensajes y errores a un > archivo. > > > > . No intentes ejecutarlo desde una unidad de red (esto me volvió loco > > durante una temporada), windows se niega a se niega a ejecutar un > > servicio que no este en una unidad local. > > > > . Antes de compilar prueba a hacerlo funcionar como indica el ejemplo de > > pywin32. > > > > > > Suerte, > > > > -- > > Gracias Oswaldo por las sugerencias. > > El ejemplo al que te refieres está en > C:\Python26\Lib\site-packages\win32\Demos\service ? Es lo único que > encontré sobre eso. > Si, ese es. -- Oswaldo Hernández From inf200523 en ucf.edu.cu Thu Apr 1 17:06:50 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Thu, 1 Apr 2010 11:06:50 -0400 (EDT) Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <4BB4A5B0.1030601@soft-com.es> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> <4BB4A5B0.1030601@soft-com.es> Message-ID: <1594.10.14.19.12.1270134410.squirrel@correo.ucf.edu.cu> > Boris Perez Canedo escribió: >> > Boris Perez Canedo escribió: >> >> Hola a todos, >> >> >> >> Estoy tratando de convertir mi aplicación en un servicio de windows >> >> uando: win32serviceutil.ServiceFramework y luego utilizo py2exe para >> >> compilar. >> > ... >> >> Si lo corro en IDE de python puedo ver que se mantiene corriendo y >> >> funciona correctamente, no entiendo por qué no ocurre lo mismo >> cuando es >> >> compilado, instalado e iniciado. >> > >> > Cuando ejecutas en el ide invocas directamente a tu funcion, ignorando >> > todo el protocolo de servicios de windows. >> > >> > pywin32 trae un ejemplo de servicio (servidor y cliente), incluso te >> > dice como instalarlo directamente sin necesidad de compilarlo. >> > >> > Sugerencias: >> > >> > . Elimina todos lor print que tengas en la aplicación. El servicio no >> > tiene stdout/stderr, por lo que te pueden estar provocando errores. >> > Utilizar el modulo logging para enviar los mensajes y errores a un >> archivo. >> > >> > . No intentes ejecutarlo desde una unidad de red (esto me volvió loco >> > durante una temporada), windows se niega a se niega a ejecutar un >> > servicio que no este en una unidad local. >> > >> > . Antes de compilar prueba a hacerlo funcionar como indica el ejemplo de >> > pywin32. >> > >> > >> > Suerte, >> > >> > -- >> >> Gracias Oswaldo por las sugerencias. >> >> El ejemplo al que te refieres está en >> C:\Python26\Lib\site-packages\win32\Demos\service ? Es lo único que >> encontré sobre eso. >> > > Si, ese es. Acabo de instalar un ejemplo: serviceEvent.py (serviceEvent.py install), lo puedo ver en la lista de servicios, pero al intentar iniciarlo me dice lo siguiente: El servicio no ha respondido a la petición o inicio del control en un tiempo adecuado. A qué puede deberse eso? Es un demo de python! --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: ------------ próxima parte ------------ > Boris Perez Canedo escribi?>> > Boris Perez Canedo escribi?>> >> Hola a todos, >> >> >> >> Estoy tratando de convertir mi aplicaci?n un servicio de windows >> >> uando: win32serviceutil.ServiceFramework y luego utilizo py2exe para >> >> compilar. >> > ... >> >> Si lo corro en IDE de python puedo ver que se mantiene corriendo y >> >> funciona correctamente, no entiendo por qu?o ocurre lo mismo >> cuando es >> >> compilado, instalado e iniciado. >> > >> > Cuando ejecutas en el ide invocas directamente a tu funcion, ignorando >> > todo el protocolo de servicios de windows. >> > >> > pywin32 trae un ejemplo de servicio (servidor y cliente), incluso te >> > dice como instalarlo directamente sin necesidad de compilarlo. >> > >> > Sugerencias: >> > >> > . Elimina todos lor print que tengas en la aplicaci?El servicio no >> > tiene stdout/stderr, por lo que te pueden estar provocando errores. >> > Utilizar el modulo logging para enviar los mensajes y errores a un >> archivo. >> > >> > . No intentes ejecutarlo desde una unidad de red (esto me volvi?co >> > durante una temporada), windows se niega a se niega a ejecutar un >> > servicio que no este en una unidad local. >> > >> > . Antes de compilar prueba a hacerlo funcionar como indica el ejemplo de >> > pywin32. >> > >> > >> > Suerte, >> > >> > -- >> >> Gracias Oswaldo por las sugerencias. >> >> El ejemplo al que te refieres est?n >> C:\Python26\Lib\site-packages\win32\Demos\service ? Es lo ? que >> encontr?obre eso. >> > > Si, ese es. Acabo de instalar un ejemplo: serviceEvent.py (serviceEvent.py install), lo puedo ver en la lista de servicios, pero al intentar iniciarlo me dice lo siguiente: El servicio no ha respondido a la petici? inicio del control en un tiempo adecuado. A qu?uede deberse eso? Es un demo de python! ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Thu Apr 1 17:06:45 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Thu, 1 Apr 2010 11:06:45 -0400 (EDT) Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <4BB4A5B0.1030601@soft-com.es> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> <4BB4A5B0.1030601@soft-com.es> Message-ID: <1592.10.14.19.12.1270134405.squirrel@correo.ucf.edu.cu> > Boris Perez Canedo escribió: >> > Boris Perez Canedo escribió: >> >> Hola a todos, >> >> >> >> Estoy tratando de convertir mi aplicación en un servicio de windows >> >> uando: win32serviceutil.ServiceFramework y luego utilizo py2exe para >> >> compilar. >> > ... >> >> Si lo corro en IDE de python puedo ver que se mantiene corriendo y >> >> funciona correctamente, no entiendo por qué no ocurre lo mismo >> cuando es >> >> compilado, instalado e iniciado. >> > >> > Cuando ejecutas en el ide invocas directamente a tu funcion, ignorando >> > todo el protocolo de servicios de windows. >> > >> > pywin32 trae un ejemplo de servicio (servidor y cliente), incluso te >> > dice como instalarlo directamente sin necesidad de compilarlo. >> > >> > Sugerencias: >> > >> > . Elimina todos lor print que tengas en la aplicación. El servicio no >> > tiene stdout/stderr, por lo que te pueden estar provocando errores. >> > Utilizar el modulo logging para enviar los mensajes y errores a un >> archivo. >> > >> > . No intentes ejecutarlo desde una unidad de red (esto me volvió loco >> > durante una temporada), windows se niega a se niega a ejecutar un >> > servicio que no este en una unidad local. >> > >> > . Antes de compilar prueba a hacerlo funcionar como indica el ejemplo de >> > pywin32. >> > >> > >> > Suerte, >> > >> > -- >> >> Gracias Oswaldo por las sugerencias. >> >> El ejemplo al que te refieres está en >> C:\Python26\Lib\site-packages\win32\Demos\service ? Es lo único que >> encontré sobre eso. >> > > Si, ese es. Acabo de instalar un ejemplo: serviceEvent.py (serviceEvent.py install), lo puedo ver en la lista de servicios, pero al intentar iniciarlo me dice lo siguiente: El servicio no ha respondido a la petición o inicio del control en un tiempo adecuado. A qué puede deberse eso? Es un demo de python! --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Thu Apr 1 17:42:21 2010 From: listas en soft-com.es (=?UTF-8?B?T3N3YWxkbyBIZXJuw6FuZGV6?=) Date: Thu, 01 Apr 2010 17:42:21 +0200 Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <1592.10.14.19.12.1270134405.squirrel@correo.ucf.edu.cu> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> <4BB4A5B0.1030601@soft-com.es> <1592.10.14.19.12.1270134405.squirrel@correo.ucf.edu.cu> Message-ID: <4BB4BEDD.3030504@soft-com.es> Boris Perez Canedo escribió: ... > Acabo de instalar un ejemplo: serviceEvent.py (serviceEvent.py install), > lo puedo ver en la lista de servicios, pero al intentar iniciarlo me > dice lo siguiente: El servicio no ha respondido a la petición o inicio > del control en un tiempo adecuado. > > A qué puede deberse eso? Es un demo de python! > En mi equipo carga perfectamente: C:...\Demos\service>serviceevents.py install Installing service PyServiceEventDemo Service installed C:...\Demos\service>net start PyServiceEventDemo El servicio de Python Service Event Demo está iniciándose. El servicio de Python Service Event Demo se ha iniciado con éxito. Y tambien funciona :) , al pinchar una memoira usb aparece en el Visor de sucesos (Aplicacion): Origen: PyServiceEventDemo, Descripción: A device event occurred: 8000 - DEV_BROADCAST_INFO:{'devicetype': 5, 'name': '\\', 'classguid': IID('{A5DCBF10-6530-11D2-901F-00C04FB951ED}')} La unica diferencia aparente es que me ha parecido ver que tu tienes python 2.6 y yo python 2.5, pero es raro que sea debido a eso. El mensaje que te aparece no indica que el servicio haya fallado, sino que no ha respondido en el tiempo que windows espera. ¿Que hardware tienes?, Version de Windows? -- Oswaldo Hernández From a.porrua en gmail.com Thu Apr 1 19:28:54 2010 From: a.porrua en gmail.com (Antonio Fernandez Porrua) Date: Thu, 1 Apr 2010 19:28:54 +0200 Subject: [Python-es] StringIO vs string Message-ID: Hola, tenía que convertir un long a un string, para ello iba a utilizar una función de pycrypto el meollo del asunto lo hace el siguiente código s = '' n = long(n) pack = struct.pack while n > 0: s = pack('>I', n & 0xffffffffL) + s n = n >> 32 y he visto que suman strings, yo tenía entendido que los strings son inmutables, y que para añadir caracteres a un string hay que volver a asignar memoria y volver a copiarlo entero. Probé a hacer lo mismo con cStringIO.StringIO r=cStringIO.StringIO() pack = struct.pack while n: r.write(pack('>I', n & 0xffffffffL)[0]) n = n >> 32 haciendo un test con longs de 500bytes y 10000 iteraciones su código gana por bastante StringIO.write real 0m0.956s user 0m0.940s sys 0m0.016s string real 0m0.696s user 0m0.680s sys 0m0.012s y este con longs de 5000 bytes stringIO real 0m11.296s user 0m11.289s sys 0m0.004s string real 0m9.753s user 0m9.721s sys 0m0.036s ¿Alguién sabe a que se debe esto? ¿cúando se deben usar strings y cuando StringIO? Gracias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From olemis+py en gmail.com Thu Apr 1 19:42:04 2010 From: olemis+py en gmail.com (Olemis Lang (Simelix)) Date: Thu, 1 Apr 2010 13:42:04 -0400 Subject: [Python-es] StringIO vs string In-Reply-To: References: Message-ID: 2010/4/1 Antonio Fernandez Porrua : > Hola, tenía que convertir un long a un string, para ello iba a utilizar una > función de pycrypto > el meollo del asunto lo hace el siguiente código >     s = '' >     n = long(n) >     pack = struct.pack >     while n > 0: >         s = pack('>I', n & 0xffffffffL) + s >         n = n >> 32 > y he visto que suman strings, yo tenía entendido que los strings son > inmutables, y que para añadir caracteres a un string hay que volver a > asignar memoria y volver a copiarlo entero. Así es cómo funcionan otros lenguajes de paradigmas anteriores (C, C++, ...) . Pero, como Py es algo del futuro (muy modestamente hablando :P) , existe un garbage collector y no hay que preocuparse (tanto) por asignar memoria explícitamente (y esto en sí es una debilidad que hace que no se pueda utilizar el intérprete para e.g. sistemas en tiempo real ) . ;o) > Probé a hacer lo mismo con cStringIO.StringIO > r=cStringIO.StringIO() > [...] > > ¿Alguién sabe a que se debe esto? > ¿cúando se deben usar strings y cuando StringIO? `StringIO` es un adapter (wrapper) para hacer compatibles las cadenas de caracteres y los ficheros (e.g. redireccionar stdout, ...) -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: Tutorial: Cómo crear enlaces directos en Windows con Python - http://feedproxy.google.com/~r/simelo-es/~3/lF373i_fqYs/tutorial-como-crear-enlaces-directos-en.html From olemis+py en gmail.com Thu Apr 1 19:42:36 2010 From: olemis+py en gmail.com (Olemis Lang (Simelix)) Date: Thu, 1 Apr 2010 13:42:36 -0400 Subject: [Python-es] StringIO vs string In-Reply-To: References: Message-ID: 2010/4/1 Antonio Fernandez Porrua : > Hola, tenía que convertir un long a un string, para ello iba a utilizar una > función de pycrypto > el meollo del asunto lo hace el siguiente código >     s = '' >     n = long(n) >     pack = struct.pack >     while n > 0: >         s = pack('>I', n & 0xffffffffL) + s >         n = n >> 32 > y he visto que suman strings, yo tenía entendido que los strings son > inmutables, y que para añadir caracteres a un string hay que volver a > asignar memoria y volver a copiarlo entero. Así es cómo funcionan otros lenguajes de paradigmas anteriores (C, C++, ...) . Pero, como Py es algo del futuro (muy modestamente hablando :P) , existe un garbage collector y no hay que preocuparse (tanto) por asignar memoria explícitamente (y esto en sí es una debilidad que hace que no se pueda utilizar el intérprete para e.g. sistemas en tiempo real ) . ;o) > Probé a hacer lo mismo con cStringIO.StringIO > r=cStringIO.StringIO() > [...] > > ¿Alguién sabe a que se debe esto? > ¿cúando se deben usar strings y cuando StringIO? `StringIO` es un adapter (wrapper) para hacer compatibles las cadenas de caracteres y los ficheros (e.g. redireccionar stdout, ...) -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: Tutorial: Cómo crear enlaces directos en Windows con Python - http://feedproxy.google.com/~r/simelo-es/~3/lF373i_fqYs/tutorial-como-crear-enlaces-directos-en.html From inf200523 en ucf.edu.cu Thu Apr 1 20:07:51 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Thu, 1 Apr 2010 14:07:51 -0400 (EDT) Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= Message-ID: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> Hola a todos, Cómo puedo determinar mi dirección ip? No una dirección de localhost. Gracias por adelantado. Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jlbetancourt en estudiantes.uci.cu Thu Apr 1 20:13:44 2010 From: jlbetancourt en estudiantes.uci.cu (Jorge Luis Betancourt Gonzalez) Date: Thu, 1 Apr 2010 14:13:44 -0400 (CDT) Subject: [Python-es] Obtener el usuario (owner) de un fichero In-Reply-To: <4BB3A39C.20508@gmail.com> Message-ID: <463456614.192761270145624526.JavaMail.root@ucimail4.uci.cu> Gracias por la respuesta Arnau, el tema es que os.stat devuelve el uid (user id) y yo necesita explícitamente el username, al final he resuelto de la siguiente forma: st = os.stat(filename) import pwd userinfo = pwd.getpwuid(st[ST_UID]) de esta forma en userinfo podemos contar con información acerca del owner del fichero a partir del os.stat. Ejemplo de userinfo: ('root', '*', 0, 0, 'System Administrator', '/var/root', '/bin/sh') y bueno con userinfo[0] ya tenemos el username y otra información asociada al usuario como el path al home, etc. slds -- "It is only in the mysterious equation of love that any logical reasons can be found." "Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)" ----- Mensaje original ----- De: "Arnau Sanchez" Para: "La lista de python en castellano" Enviados: Miércoles, 31 de Marzo 2010 15:33:48 (GMT-0500) Auto-Detected Asunto: Re: [Python-es] Obtener el usuario (owner) de un fichero On 31/03/10 20:43, Jorge Luis Betancourt Gonzalez wrote: > Sin embargo, el problema de esto es ¿Cómo obtengo el owner de un fichero > determinado? ¿Alguien me puede dar un norte al respecto? http://docs.python.org/library/os.html#os.stat _______________________________________________ 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 jlbetancourt en estudiantes.uci.cu Thu Apr 1 20:17:30 2010 From: jlbetancourt en estudiantes.uci.cu (Jorge Luis Betancourt Gonzalez) Date: Thu, 1 Apr 2010 14:17:30 -0400 (CDT) Subject: [Python-es] Problemas con ipython Message-ID: <742300612.194791270145850472.JavaMail.root@ucimail4.uci.cu> Acabo de instalar la versión 0.10 en MacOS X 10.5.7 y para mi sorpresa cuando acabo de instalar y pruebo como root ipython funciona sin problemas de ningún tipo, sin embargo cuando trato de iniciarla a través de un usuario normal me da el siguiente error: serina:kernel jorge$ ipython Traceback (most recent call last): File "/usr/local/bin/ipython", line 8, in load_entry_point('ipython==0.10', 'console_scripts', 'ipython')() File "/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/pkg_resources.py", line 271, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/pkg_resources.py", line 2172, in load_entry_point raise ImportError("Entry point %r not found" % ((group,name),)) ImportError: Entry point ('console_scripts', 'ipython') not found serina:kernel jorge$ ¿Alguien tiene alguna pista sobre lo que sucede? slds -- "It is only in the mysterious equation of love that any logical reasons can be found." "Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)" From jredrejo en debian.org Thu Apr 1 20:25:11 2010 From: jredrejo en debian.org (=?UTF-8?Q?Jos=C3=A9_Luis_Redrejo_Rodr=C3=ADguez?=) Date: Thu, 1 Apr 2010 20:25:11 +0200 Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> Message-ID: En qué interfaz de red? Un ordenador puede tener tantas direcciones ip como tarjetas de red fijas e inalámbricas tenga. El día 1 de abril de 2010 20:07, Boris Perez Canedo escribió: > Hola a todos, > > Cómo puedo determinar mi dirección ip? No una dirección de localhost. > > Gracias por adelantado. > > Boris. > > ________________________________ > > La mejor vacuna contra el virus A(H1N1) es la higiene personal > > _______________________________________________ > 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 pyarnau en gmail.com Thu Apr 1 20:28:18 2010 From: pyarnau en gmail.com (Arnau Sanchez) Date: Thu, 01 Apr 2010 20:28:18 +0200 Subject: [Python-es] Obtener el usuario (owner) de un fichero In-Reply-To: <463456614.192761270145624526.JavaMail.root@ucimail4.uci.cu> References: <463456614.192761270145624526.JavaMail.root@ucimail4.uci.cu> Message-ID: <4BB4E5C2.4080709@gmail.com> On 01/04/10 20:13, Jorge Luis Betancourt Gonzalez wrote: > el tema es que os.stat devuelve el uid (user > id) y yo necesita explícitamente el username, al final he resuelto de la > siguiente forma: Ah, pensé que el uid ya te servía. Sí, pwd es el módulo para cosas de usuarios, y grp para grupos. > st = os.stat(filename) > import pwd > userinfo = pwd.getpwuid(st[ST_UID]) el objeto que devuelve os.stat tiene atributos: st.st_uid arnau From pyarnau en gmail.com Thu Apr 1 20:37:19 2010 From: pyarnau en gmail.com (Arnau Sanchez) Date: Thu, 01 Apr 2010 20:37:19 +0200 Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> Message-ID: <4BB4E7DF.3040207@gmail.com> On 01/04/10 20:07, Boris Perez Canedo wrote: > Cómo puedo determinar mi dirección ip? No una dirección de localhost. Asumiendo que te refieres a la IP pública: hay muchos servicios web que te dan ese dato, por ejemplo: >>> import urllib2 >>> urllib2.urlopen('http://whatismyip.org').read() '88.135.232.19' From inf200523 en ucf.edu.cu Thu Apr 1 20:45:40 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Thu, 1 Apr 2010 14:45:40 -0400 (EDT) Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <4BB4BEDD.3030504@soft-com.es> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> <4BB4A5B0.1030601@soft-com.es> <1592.10.14.19.12.1270134405.squirrel@correo.ucf.edu.cu> <4BB4BEDD.3030504@soft-com.es> Message-ID: <1835.10.14.19.12.1270147540.squirrel@correo.ucf.edu.cu> > Boris Perez Canedo escribió: > ... >> Acabo de instalar un ejemplo: serviceEvent.py (serviceEvent.py install), >> lo puedo ver en la lista de servicios, pero al intentar iniciarlo me >> dice lo siguiente: El servicio no ha respondido a la petición o inicio >> del control en un tiempo adecuado. >> >> A qué puede deberse eso? Es un demo de python! >> > > En mi equipo carga perfectamente: > > C:...\Demos\service>serviceevents.py install > > Installing service PyServiceEventDemo > Service installed > > C:...\Demos\service>net start PyServiceEventDemo > > El servicio de Python Service Event Demo está iniciándose. > El servicio de Python Service Event Demo se ha iniciado con éxito. > > Y tambien funciona :) , al pinchar una memoira usb aparece en el Visor > de sucesos (Aplicacion): > Origen: PyServiceEventDemo, Descripción: > A device event occurred: 8000 - DEV_BROADCAST_INFO:{'devicetype': 5, > 'name': '\\', 'classguid': IID('{A5DCBF10-6530-11D2-901F-00C04FB951ED}')} > > La unica diferencia aparente es que me ha parecido ver que tu tienes > python 2.6 y yo python 2.5, pero es raro que sea debido a eso. > > El mensaje que te aparece no indica que el servicio haya fallado, sino > que no ha respondido en el tiempo que windows espera. > > ¿Que hardware tienes?, Version de Windows? > > -- > Oswaldo Hernández  Reenvío el correo, no estoy seguro de que el otro llegó, laptop Compaq Evo, pentium 4, Windows XP SP 2. Crees que la versión SP 2 pueda tener que ver con este problema? --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Thu Apr 1 21:04:37 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Thu, 1 Apr 2010 15:04:37 -0400 (EDT) Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: <4BB4E7DF.3040207@gmail.com> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> Message-ID: <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> > On 01/04/10 20:07, Boris Perez Canedo wrote: > >> Cómo puedo determinar mi dirección ip? No una dirección de localhost. > > Asumiendo que te refieres a la IP pública: hay muchos servicios web que te dan > ese dato, por ejemplo: > > >>> import urllib2 > >>> urllib2.urlopen('http://whatismyip.org').read() > '88.135.232.19' Cualquier interface, en mi caso solo tengo un adaptador de red, pero seria bueno obtenerlas para todos. Arnau no hay otra forma? que no tenga que realizar una conexi'on para obtenerla. He pensado en ipconfig y luego con expresiones regulares obtener la ip, pero no sería multiplataforma. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pyarnau en gmail.com Thu Apr 1 21:42:19 2010 From: pyarnau en gmail.com (Arnau Sanchez) Date: Thu, 01 Apr 2010 21:42:19 +0200 Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> Message-ID: <4BB4F71B.5040703@gmail.com> On 01/04/10 21:04, Boris Perez Canedo wrote: > Cualquier interface, en mi caso solo tengo un adaptador de red, pero > seria bueno obtenerlas para todos. > > Arnau no hay otra forma? que no tenga que realizar una conexi'on para > obtenerla. He pensado en ipconfig y luego con expresiones regulares > obtener la ip, pero no sería multiplataforma. Evidentemente si es la IP de los interfaces lo de antes no sirve. Si quieres algo multiplataforma sólo se me ocurre netifaces: http://pypi.python.org/pypi/netifaces/ From reynaldomic en gmail.com Thu Apr 1 22:32:18 2010 From: reynaldomic en gmail.com (Reynaldo Baquerizo) Date: Thu, 1 Apr 2010 15:32:18 -0500 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_determinar_mi_ip=3F?= In-Reply-To: <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> Message-ID: <20100401153218.0791912d@bertello.localdomain> > Cualquier interface, en mi caso solo tengo un adaptador > de red, pero seria bueno obtenerlas para todos. Y cómo te conectas a la red? La interfaz de red de tu pc tiene la ip pública o hay otro dispositivo delante? > Arnau no hay otra forma? que > no tenga que realizar una conexi'on para obtenerla. He pensado en ipconfig y > luego con expresiones regulares obtener la ip, pero no sería multiplataforma. Hace tiempo hice un script[1] para obtenerla ip y reiniciar la conexión del modem adsl que tengo en casa. Es un poco triquiñuelo, pero me funciona. Si tienes algún equipo así que puedes acceder por web supongo que podrías hacerlo ( y asumiendo que tienes la clave) Te dejo el script, se llama zyxel.py justamente porque mi modem es zyxel [1] http://skraelings.freehostia.com/zyxel.py -- From pdlopez en uci.cu Thu Apr 1 22:38:50 2010 From: pdlopez en uci.cu (Pavel Daniel Lopez Castillo) Date: Thu, 1 Apr 2010 16:38:50 -0400 (CDT) Subject: [Python-es] MysqlDB In-Reply-To: <32731245.210091270154071604.JavaMail.root@ucimail1.uci.cu> Message-ID: <1145145091.212301270154330529.JavaMail.root@ucimail1.uci.cu> Donde se puede descargar MysqlDB para python2.5 y windows, he buscado en internet y ningun vinculo me ha pinchado, en sourceforge no lo puedo descargar porque para mi esta bloqueado?? ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lasizoillo en gmail.com Fri Apr 2 00:08:40 2010 From: lasizoillo en gmail.com (lasizoillo) Date: Fri, 2 Apr 2010 00:08:40 +0200 Subject: [Python-es] Problemas con ipython In-Reply-To: <742300612.194791270145850472.JavaMail.root@ucimail4.uci.cu> References: <742300612.194791270145850472.JavaMail.root@ucimail4.uci.cu> Message-ID: 2010/4/1 Jorge Luis Betancourt Gonzalez : > Acabo de instalar la versión 0.10 en MacOS X 10.5.7 y para mi sorpresa cuando acabo de instalar y pruebo como root ipython funciona sin problemas de ningún tipo, sin embargo cuando trato de iniciarla a través de un usuario normal me da el siguiente error: > > serina:kernel jorge$ ipython > Traceback (most recent call last): >  File "/usr/local/bin/ipython", line 8, in >    load_entry_point('ipython==0.10', 'console_scripts', 'ipython')() >  File "/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/pkg_resources.py", line 271, in load_entry_point >    return get_distribution(dist).load_entry_point(group, name) >  File "/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/pkg_resources.py", line 2172, in load_entry_point >    raise ImportError("Entry point %r not found" % ((group,name),)) > ImportError: Entry point ('console_scripts', 'ipython') not found > serina:kernel jorge$ > > ¿Alguien tiene alguna pista sobre lo que sucede? > Mira a ver si el python que estas ejecutando es el mismo en el que tienes instalado el ipython. Un saludo: Javi From maengora en gmail.com Fri Apr 2 03:07:52 2010 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Thu, 1 Apr 2010 21:07:52 -0400 Subject: [Python-es] Errno 9 In-Reply-To: References: Message-ID: Gracias, Solucionado gracias a las respuestas enviadas. El 1 de abril de 2010 03:53, Juan Ignacio escribió: > Estás abriendo el archivo en modo escritura > > El 01/04/2010 01:47, "Manuel Enrique González Ramírez" > escribió: > > > Hola amig en s de la lista. > > Tengo un pequeño inconveniente con un código. > Al tratar de crear privilegios desde un formulario creado con python (2.5) > y las wx (también con MySQLdb py2.5) todo carga perfecto pero al hacer clic > en el botón crear el log me arroja el siguiente mensaje: > > Traceback (most recent call last): > File "C:\eduauxi\frm_usuarios.py", line 66, in crea_usuario > for linea in f: > IOError: [Errno 9] Bad file descriptor > > Se supone que el error aparece cuando el archivo NO existe o cuando hay > problemas de lectura/escritura (bueno, eso creo) pero existen otros modulos > en este mismo programa que si hacen la lectura/escritura del archivo. > > Necesito que me colaboren por fa. > > Este es el código: > > def crea_usuario(self,event): #init function > #[266]Code event VwX...Don't modify[266]# > #add your code here > usuario = self.txt_usuario.GetValue() > clave1 = self.txt_clave1.GetValue() > clave2 = self.txt_clave2.GetValue() > > > f = open("C:/eduauxi/wxpycl.txt","w") > > # Leo la línea en forma de arreglo > for linea in f: > xDato = linea.split(',') > xHost=xDato[0] > xUsuario=xDato[1] > xPass=xDato[2] > f.close() > # Hago la conexión a la base de datos con los datos del archivo > db = con.connect(host=xHost, user=xUsuario, passwd=xPass, > db='mibdd') > c = db.cursor() > > > if not clave1==clave2: > msg = wx.MessageDialog(self,"LA CLAVE NO COINCIDE","ERROR DE > DATOS",wx.OK|wx.ICON_EXCLAMATION) > msg.ShowModal() > msg.Destroy() > else: > sql = c.execute('GRANT ALL PRIVILEGES ON > mibdd.informe_academico TO "'+usuario+'"@"%" IDENTIFIED BY "'+clave+';') > res = c.fetchone() > sql1 = c.execute('flush privileges'); > c.commit; > return #end function > > -- > 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 listas en soft-com.es Fri Apr 2 12:54:18 2010 From: listas en soft-com.es (=?UTF-8?B?T3N3YWxkbyBIZXJuw6FuZGV6?=) Date: Fri, 02 Apr 2010 12:54:18 +0200 Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <1835.10.14.19.12.1270147540.squirrel@correo.ucf.edu.cu> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> <4BB4A5B0.1030601@soft-com.es> <1592.10.14.19.12.1270134405.squirrel@correo.ucf.edu.cu> <4BB4BEDD.3030504@soft-com.es> <1835.10.14.19.12.1270147540.squirrel@correo.ucf.edu.cu> Message-ID: <4BB5CCDA.4070304@soft-com.es> Boris Perez Canedo escribió: > > Boris Perez Canedo escribió: > > ... > >> Acabo de instalar un ejemplo: serviceEvent.py (serviceEvent.py > install), > >> lo puedo ver en la lista de servicios, pero al intentar iniciarlo me > >> dice lo siguiente: El servicio no ha respondido a la petición o inicio > >> del control en un tiempo adecuado. > >> > >> A qué puede deberse eso? Es un demo de python! > >> > > > > En mi equipo carga perfectamente: > > > > C:...\Demos\service>serviceevents.py install > > > > Installing service PyServiceEventDemo > > Service installed > > > > C:...\Demos\service>net start PyServiceEventDemo > > > > El servicio de Python Service Event > Demo está iniciándose. > > El servicio de Python Service Event > Demo se ha iniciado con éxito. > > > > Y tambien funciona :) , al pinchar una memoira usb aparece en el Visor > > de sucesos (Aplicacion): > > Origen: PyServiceEventDemo, > Descripción: > > A device event occurred: 8000 - DEV_BROADCAST_INFO:{'devicetype': 5, > > 'name': '\\', 'classguid': > IID('{A5DCBF10-6530-11D2-901F-00C04FB951ED}')} > > > > La unica diferencia aparente es que me ha parecido ver que tu tienes > > python 2.6 y yo python 2.5, pero es raro que sea debido a eso. > > > > El mensaje que te aparece no indica que el servicio haya fallado, sino > > que no ha respondido en el tiempo que windows espera. > > > > ¿Que hardware tienes?, Version de Windows? > > > > -- > > Oswaldo Hernández > > Reenvío el correo, no estoy seguro de que el otro llegó, > laptop Compaq Evo, pentium 4, Windows XP SP 2. Crees que la versión SP 2 > pueda tener que ver con este problema? > No, no es problema el SP2. El equipo no es muy potente, imagino que como mucho solo tiene 512 MB de memoria, pero debería funcionar. Echale un vistazo al visor de sucesos por si hay algun mensaje que te indique algo. También puedes verificar si es un problema de timeout ajustando este parámetro en el registro de windows: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control Agrega la clave 'ServicesPipeTimeout' (DWORD), el valor se expresa en milisegundos, por lo que para darle, por ejemplo 60 segundos de espera ponle un valor de 60000. No se si es necesario que reinicies el equipo. Mas info en: OjO, las modificaciones del registro son delicadas, asegúrate que lo haces bien y una vez terminadas las pruebas déjalo como estaba. Saludos, -- Oswaldo Hernández From listas en soft-com.es Fri Apr 2 12:56:54 2010 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Fri, 02 Apr 2010 12:56:54 +0200 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_determinar_mi_ip=3F?= In-Reply-To: <4BB4F71B.5040703@gmail.com> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> Message-ID: <4BB5CD76.5020704@soft-com.es> Arnau Sanchez escribió: > On 01/04/10 21:04, Boris Perez Canedo wrote: > >> Cualquier interface, en mi caso solo tengo un adaptador de red, pero >> seria bueno obtenerlas para todos. >> >> Arnau no hay otra forma? que no tenga que realizar una conexi'on para >> obtenerla. He pensado en ipconfig y luego con expresiones regulares >> obtener la ip, pero no sería multiplataforma. > > Evidentemente si es la IP de los interfaces lo de antes no sirve. Si > quieres algo multiplataforma sólo se me ocurre netifaces: > > http://pypi.python.org/pypi/netifaces/ Tambien puedes utilizar el módulo socket: >>> import socket >>> socket.gethostbyname_ex(socket.gethostname()) ('oswaldo', [], ['192.168.50.1', '192.168.2.2']) Saludos, -- Oswaldo Hernández From pyarnau en gmail.com Fri Apr 2 13:15:05 2010 From: pyarnau en gmail.com (Arnau Sanchez) Date: Fri, 02 Apr 2010 13:15:05 +0200 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_determinar_mi_ip=3F?= In-Reply-To: <4BB5CD76.5020704@soft-com.es> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> <4BB5CD76.5020704@soft-com.es> Message-ID: <4BB5D1B9.40407@gmail.com> On 02/04/10 12:56, Oswaldo Hernández wrote: > Tambien puedes utilizar el módulo socket: > > >>> import socket > >>> socket.gethostbyname_ex(socket.gethostname()) > ('oswaldo', [], ['192.168.50.1', '192.168.2.2']) En los foros comentan que esta solución -que sí sirve en según qué casos- no es muy fiable. Por ejemplo, el resultado en mi máquina (con interfaces eth0 y wlan0 levantados) no es especialmente útil: In [2]:import socket In [3]:socket.gethostbyname_ex(socket.gethostname()) Out[3]:('localhost', ['latitude'], ['127.0.0.1']) From listas en soft-com.es Fri Apr 2 13:39:51 2010 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Fri, 02 Apr 2010 13:39:51 +0200 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_determinar_mi_ip=3F?= In-Reply-To: <4BB5D1B9.40407@gmail.com> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> <4BB5CD76.5020704@soft-com.es> <4BB5D1B9.40407@gmail.com> Message-ID: <4BB5D787.4070506@soft-com.es> Arnau Sanchez escribió: > On 02/04/10 12:56, Oswaldo Hernández wrote: > >> Tambien puedes utilizar el módulo socket: >> >> >>> import socket >> >>> socket.gethostbyname_ex(socket.gethostname()) >> ('oswaldo', [], ['192.168.50.1', '192.168.2.2']) > > En los foros comentan que esta solución -que sí sirve en según qué > casos- no es muy fiable. Por ejemplo, el resultado en mi máquina (con > interfaces eth0 y wlan0 levantados) no es especialmente útil: > > In [2]:import socket > > In [3]:socket.gethostbyname_ex(socket.gethostname()) > Out[3]:('localhost', ['latitude'], ['127.0.0.1']) Raro..., socket.gethostname() te devuelve 'localhost' en vez del nombre de tu maquina, por eso gethostbyname_ex() te da 127.0.0.1. Que resultado te da si ejecutas: socket.gethostbyname_ex('latitude') -- Oswaldo Hernández From pyarnau en gmail.com Fri Apr 2 13:44:10 2010 From: pyarnau en gmail.com (Arnau Sanchez) Date: Fri, 02 Apr 2010 13:44:10 +0200 Subject: [Python-es] =?iso-8859-1?q?C=F3mo_determinar_mi_ip=3F?= In-Reply-To: <4BB5D787.4070506@soft-com.es> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> <4BB5CD76.5020704@soft-com.es> <4BB5D1B9.40407@gmail.com> <4BB5D787.4070506@soft-com.es> Message-ID: <4BB5D88A.1040706@gmail.com> On 02/04/10 13:39, Oswaldo Hernández wrote: > Que resultado te da si ejecutas: > socket.gethostbyname_ex('latitude') In [2]:socket.gethostbyname_ex('latitude') Out[2]:('localhost', ['latitude'], ['127.0.0.1']) Supongo que tendrá algo que ver con que: # /etc/hosts 127.0.0.1 localhost latitude From jredrejo en debian.org Fri Apr 2 14:19:26 2010 From: jredrejo en debian.org (=?UTF-8?Q?Jos=C3=A9_Luis_Redrejo_Rodr=C3=ADguez?=) Date: Fri, 2 Apr 2010 14:19:26 +0200 Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: <4BB5D88A.1040706@gmail.com> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> <4BB5CD76.5020704@soft-com.es> <4BB5D1B9.40407@gmail.com> <4BB5D787.4070506@soft-com.es> <4BB5D88A.1040706@gmail.com> Message-ID: Yo preparé dos funciones para esto: una que me da la ip pasándole el interfaz de red, y otra que me da la ip pasándole una ip a la que quiero acceder. Con lo que si hay un interfaz de red para salir a internet y otro para la red local, puedo usar el que necesite. Para salir a internet, le paso por defecto el valor de uno de los DNS root mundiales, pero valdría cualquier ip que sepas que está en internet. def get_ip_inet_address(connection_ip='198.41.0.4'): """Returns the ip address of the interface used to connect to the given ip 198.41.0.4 is a DNS ROOT Server, so it's the default value to connect to Internet """ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect((connection_ip, 0)) inet_address= s.getsockname()[0] s.close() logging.getLogger().debug("Inet Address:" + inet_address) return inet_address Si necesitas la que calcula la ip de un interfaz, dímelo. Saludos. El día 2 de abril de 2010 13:44, Arnau Sanchez escribió: > On 02/04/10 13:39, Oswaldo Hernández wrote: > >> Que resultado te da si ejecutas: >> socket.gethostbyname_ex('latitude') > > In [2]:socket.gethostbyname_ex('latitude') > Out[2]:('localhost', ['latitude'], ['127.0.0.1']) > > Supongo que tendrá algo que ver con que: > > # /etc/hosts > 127.0.0.1 localhost latitude > _______________________________________________ > 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 inf200523 en ucf.edu.cu Fri Apr 2 14:12:23 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 08:12:23 -0400 (EDT) Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: <4BB5D787.4070506@soft-com.es> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> <4BB5CD76.5020704@soft-com.es> <4BB5D1B9.40407@gmail.com> <4BB5D787.4070506@soft-com.es> Message-ID: <1065.10.14.19.12.1270210343.squirrel@correo.ucf.edu.cu> > Arnau Sanchez escribió: >> On 02/04/10 12:56, Oswaldo Hernández wrote: >> >>> Tambien puedes utilizar el módulo socket: >>> >>> >>> import socket >>> >>> socket.gethostbyname_ex(socket.gethostname()) >>> ('oswaldo', [], ['192.168.50.1', '192.168.2.2']) >> >> En los foros comentan que esta solución -que sí sirve en según qué >> casos- no es muy fiable. Por ejemplo, el resultado en mi máquina (con >> interfaces eth0 y wlan0 levantados) no es especialmente útil: >> >> In [2]:import socket >> >> In [3]:socket.gethostbyname_ex(socket.gethostname()) >> Out[3]:('localhost', ['latitude'], ['127.0.0.1']) > > Raro..., socket.gethostname() te devuelve 'localhost' en vez del nombre > de tu maquina, por eso gethostbyname_ex() te da 127.0.0.1. > > Que resultado te da si ejecutas: > socket.gethostbyname_ex('latitude') > > > Gracias a todos por las respuestas voy a empezar a probar. Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From monobot.soft en gmail.com Fri Apr 2 14:32:10 2010 From: monobot.soft en gmail.com (monoBOT) Date: Fri, 2 Apr 2010 13:32:10 +0100 Subject: [Python-es] problema con las tildes Message-ID: Tengo el problema siguiente: no consigo guardar información en un fichero xml desde python, la codificación de python es la # -*- coding: cp1252 -*- y la de xml El problema es con las tildes. Ya he creado las funciones para evita que se graben caracteres como & o < >. -- monobotblog.alvarezalonso.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Fri Apr 2 14:33:23 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 08:33:23 -0400 (EDT) Subject: [Python-es] Rotar tablas en ReportLab? Message-ID: <1149.10.14.19.12.1270211603.squirrel@correo.ucf.edu.cu> Hola, Es posible rotar una tabla con su contenido en reportlab? Sucede que realizo un reporte cuyas tablas son muy grandes y ni siquiera disminuyendo el tipo de letra, el padding y otras cosas logro ajustarlas a la hoja. Se que podría intentar rotarla por código sin utilizar reportlab pero eso no me rotaría como tal el contenido de la tabla, es decir, el contenido seguiría horizontal. Gracias de antemano, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Fri Apr 2 14:18:45 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 08:18:45 -0400 (EDT) Subject: [Python-es] MysqlDB In-Reply-To: <1145145091.212301270154330529.JavaMail.root@ucimail1.uci.cu> References: <1145145091.212301270154330529.JavaMail.root@ucimail1.uci.cu> Message-ID: <1098.10.14.19.12.1270210725.squirrel@correo.ucf.edu.cu> Donde se puede descargar MysqlDB para python2.5 y windows, he buscado en internet y ningun vinculo me ha pinchado, en sourceforge no lo puedo descargar porque para mi esta bloqueado?? www.vtunnel.com ? --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Fri Apr 2 14:38:36 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 08:38:36 -0400 (EDT) Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> <4BB5CD76.5020704@soft-com.es> <4BB5D1B9.40407@gmail.com> <4BB5D787.4070506@soft-com.es> <4BB5D88A.1040706@gmail.com> Message-ID: <1161.10.14.19.12.1270211916.squirrel@correo.ucf.edu.cu> > Yo preparé dos funciones para esto: una que me da la ip pasándole el > interfaz de red, y otra que me da la ip pasándole una ip a la que > quiero acceder. Con lo que si hay un interfaz de red para salir a > internet y otro para la red local, puedo usar el que necesite. Para > salir a internet, le paso por defecto el valor de uno de los DNS root > mundiales, pero valdría cualquier ip que sepas que está en internet. > > def get_ip_inet_address(connection_ip='198.41.0.4'): > """Returns the ip address of the interface used to connect to the given ip > > 198.41.0.4 is a DNS ROOT Server, so it's the default value to > connect to Internet > """ > s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) > s.connect((connection_ip, 0)) > inet_address= s.getsockname()[0] > s.close() > logging.getLogger().debug("Inet Address:" + inet_address) > return inet_address > > > Si necesitas la que calcula la ip de un interfaz, dímelo. > Ok, Gracias, me puedes enviar la otra si no te es molestia :) Saludos. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Fri Apr 2 14:43:24 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Fri, 2 Apr 2010 14:43:24 +0200 Subject: [Python-es] no consigo grabar xml In-Reply-To: References: Message-ID: El día 27 de marzo de 2010 13:39, monoBOT escribió: > quiero conseguir sacar informacion desde un xml y luego tras modificarla > volverla a grabar en el mismo xml... > estoy aprendiendo python y no se nada de xml, asi que supongo que es muy > facil para la mayoria de ustedes. No es necesario que te compliques con construcciones xml que al final resultan ilegibles. Puedes hacer tu trabajo directamente con python (sin tener que aplicar grandes conocimientos de DOM) utilizando Amara. Pego aquí el ejemplo que has adjuntado con tus líneas comentadas y con las líneas equivalentes escritas con amara [1]. Compara y elige. La información de Amara la tenemos centralizada aquí [2] > Bueno les adjunto el ficher py donde estoy haciendo las pruebas y el archivo > xml... > gracias por su ayuda. > [1] http://paste2.org/p/751562 [2] http://wiki.xml3k.org/Amara2 Saludos, -- Luis Miguel > > _______________________________________________ > 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 oscar.carballal en gmail.com Fri Apr 2 15:01:58 2010 From: oscar.carballal en gmail.com (Oscar Carballal Prego) Date: Fri, 2 Apr 2010 15:01:58 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: <7145EDCF-8EB5-4DE5-BE5C-4FE7ADD2E73B@gmail.com> El 02/04/2010, a las 14:32, monoBOT escribió: > Tengo el problema siguiente: > no consigo guardar información en un fichero xml desde python, la > codificación de python es la > > # -*- coding: cp1252 -*- > > > y la de xml > > > El problema es con las tildes. > Ya he creado las funciones para evita que se graben caracteres como > & o < >. > Yo usaría UTF-8 para ambas, así te ahorras problemas, en cualquier caso, si realmente necesitas meter codificación latina, declara el fichero python en latin-1 (es el mismo que iso-8859-1) # -*- coding: utf-8 -*- o # -*- coding: latin-1-*- Ambas son las recomendaciones para Python 2.6.x [1], si trabajas con Python 3 es casi obligatorio el uso de UTF-8 [2]. Un saludo! [1] http://www.python.org/dev/peps/pep-0263/ [2] http://www.python.org/dev/peps/pep-3120/ From guillem en alcarrer.net Fri Apr 2 15:06:00 2010 From: guillem en alcarrer.net (Guillem Barba) Date: Fri, 2 Apr 2010 10:06:00 -0300 Subject: [Python-es] MysqlDB In-Reply-To: <1098.10.14.19.12.1270210725.squirrel@correo.ucf.edu.cu> References: <1145145091.212301270154330529.JavaMail.root@ucimail1.uci.cu> <1098.10.14.19.12.1270210725.squirrel@correo.ucf.edu.cu> Message-ID: <201004021006.00503.guillem@alcarrer.net> A Divendres 02 Abril 2010 09:18:45, Boris Perez Canedo va escriure: > Donde se > puede descargar MysqlDB para python2.5 y windows, he buscado en internet y > ningun vinculo me ha pinchado, en sourceforge no lo puedo descargar porque > para mi esta bloqueado?? No sé si estás preguntando por una librería o por el SDGB MySql (el servidor de bases de datos, vaya. Si es esto último, en www.mysql.org http://dev.mysql.com/downloads/mysql/#downloads http://dev.mysql.com/downloads/python.html abrazo! -- Guillem Barba guillem en alcarrer.net http://www.guillem.alcarrer.net L'Hospitalet de Llobregat - Catalunya From inf200523 en ucf.edu.cu Fri Apr 2 15:19:26 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 09:19:26 -0400 (EDT) Subject: [Python-es] Ayuda con py2exe y pywin32 para compilar servicios In-Reply-To: <4BB5CCDA.4070304@soft-com.es> References: <1565.10.14.19.12.1270050112.squirrel@correo.ucf.edu.cu> <4BB467AD.9010801@soft-com.es> <1499.10.14.19.12.1270129126.squirrel@correo.ucf.edu.cu> <4BB4A5B0.1030601@soft-com.es> <1592.10.14.19.12.1270134405.squirrel@correo.ucf.edu.cu> <4BB4BEDD.3030504@soft-com.es> <1835.10.14.19.12.1270147540.squirrel@correo.ucf.edu.cu> <4BB5CCDA.4070304@soft-com.es> Message-ID: <1076.10.14.19.12.1270214366.squirrel@correo.ucf.edu.cu> > Boris Perez Canedo escribió: >> > Boris Perez Canedo escribió: >> > ... >> >> Acabo de instalar un ejemplo: serviceEvent.py (serviceEvent.py >> install), >> >> lo puedo ver en la lista de servicios, pero al intentar iniciarlo me >> >> dice lo siguiente: El servicio no ha respondido a la petición o inicio >> >> del control en un tiempo adecuado. >> >> >> >> A qué puede deberse eso? Es un demo de python! >> >> >> > >> > En mi equipo carga perfectamente: >> > >> > C:...\Demos\service>serviceevents.py install >> > >> > Installing service PyServiceEventDemo >> > Service installed >> > >> > C:...\Demos\service>net start PyServiceEventDemo >> > >> > El servicio de Python Service Event >> Demo está iniciándose. >> > El servicio de Python Service Event >> Demo se ha iniciado con éxito. >> > >> > Y tambien funciona :) , al pinchar una memoira usb aparece en el Visor >> > de sucesos (Aplicacion): >> > Origen: PyServiceEventDemo, >> Descripción: >> > A device event occurred: 8000 - DEV_BROADCAST_INFO:{'devicetype': 5, >> > 'name': '\\', 'classguid': >> IID('{A5DCBF10-6530-11D2-901F-00C04FB951ED}')} >> > >> > La unica diferencia aparente es que me ha parecido ver que tu tienes >> > python 2.6 y yo python 2.5, pero es raro que sea debido a eso. >> > >> > El mensaje que te aparece no indica que el servicio haya fallado, sino >> > que no ha respondido en el tiempo que windows espera. >> > >> > ¿Que hardware tienes?, Version de Windows? >> > >> > -- >> > Oswaldo Hernández >> >> Reenvío el correo, no estoy seguro de que el otro llegó, >> laptop Compaq Evo, pentium 4, Windows XP SP 2. Crees que la versión SP 2 >> pueda tener que ver con este problema? >> > > No, no es problema el SP2. El equipo no es muy potente, imagino que como > mucho solo tiene 512 MB de memoria, pero debería funcionar. > > Echale un vistazo al visor de sucesos por si hay algun mensaje que te > indique algo. También puedes verificar si es un problema de timeout > ajustando este parámetro en el registro de windows: > > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control > > Agrega la clave 'ServicesPipeTimeout' (DWORD), el valor se expresa en > milisegundos, por lo que para darle, por ejemplo 60 segundos de espera > ponle un valor de 60000. No se si es necesario que reinicies el equipo. > > Mas info en: > > OjO, las modificaciones del registro son delicadas, asegúrate que lo > haces bien y una vez terminadas las pruebas déjalo como estaba. > Hice ambas cosas, cuando intento iniciarlo continua el mensaje, revicé en el visor de sucesor y es un error (Service Control Manager). --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Fri Apr 2 17:06:38 2010 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Fri, 2 Apr 2010 11:06:38 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" Message-ID: Hola, quisiera poder comprobar que una determinada URL existe y es accesible, pero sin 'descargar' su contenido, simplemente comprobar que el server está activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero sin tener que descargar su contenido. Podría hacer un simple wget the la URL y ver si funciona, pero no me interesa. Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la metainformación contenida en el HEAD. En principio eso seria suficiente. Ejemplo: $ curl --head http://www.google.com HTTP/1.0 200 OK Date: Fri, 02 Apr 2010 15:00:37 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com Set-Cookie: NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; HttpOnly Server: gws X-XSS-Protection: 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close $ curl --head http://www.google.comm HTTP/1.0 503 Service Unavailable Server: squid/3.0.STABLE8 Mime-Version: 1.0 Date: Fri, 02 Apr 2010 15:08:02 GMT Content-Type: text/html Content-Length: 1823 Expires: Fri, 02 Apr 2010 15:08:02 GMT X-Squid-Error: ERR_DNS_FAIL 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado claro cómo puedo validar la URL a partir de este tipo de resultados. He estado mirando un poco las clases urllib y urllib2, pero no acabo de ver cómo puedo hacer la validación sin que el contenido de la URL se descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo validar una URL sin necesidad de descargar su contenido, válido para python2.3, estaré eternamente agradecido. Muchas gracias. Saludos cordiales, Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From monobot.soft en gmail.com Fri Apr 2 17:26:53 2010 From: monobot.soft en gmail.com (monoBOT) Date: Fri, 2 Apr 2010 16:26:53 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: <7145EDCF-8EB5-4DE5-BE5C-4FE7ADD2E73B@gmail.com> References: <7145EDCF-8EB5-4DE5-BE5C-4FE7ADD2E73B@gmail.com> Message-ID: lo pruebo, muchas gracias El 2 de abril de 2010 14:01, Oscar Carballal Prego < oscar.carballal en gmail.com> escribió: > El 02/04/2010, a las 14:32, monoBOT escribió: > > > Tengo el problema siguiente: >> no consigo guardar información en un fichero xml desde python, la >> codificación de python es la >> >> # -*- coding: cp1252 -*- >> >> >> y la de xml >> >> >> El problema es con las tildes. >> Ya he creado las funciones para evita que se graben caracteres como & o < >> >. >> >> > Yo usaría UTF-8 para ambas, así te ahorras problemas, en cualquier caso, si > realmente necesitas meter codificación latina, declara el fichero python en > latin-1 (es el mismo que iso-8859-1) > > # -*- coding: utf-8 -*- > o > # -*- coding: latin-1-*- > > Ambas son las recomendaciones para Python 2.6.x [1], si trabajas con Python > 3 es casi obligatorio el uso de UTF-8 [2]. > > Un saludo! > > [1] http://www.python.org/dev/peps/pep-0263/ > [2] http://www.python.org/dev/peps/pep-3120/ > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Héctor Alvarez Arquitecto Advertencia legal: De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de carácter Personal le informamos que: Este correo electrónico contiene información privada y estrictamente confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, directa o indirectamente, usar, revelar, distribuir, imprimir o copiar ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail y proceda a borrar de su sistema inmediatamente el mensaje así como todas sus copias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Fri Apr 2 17:45:43 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 11:45:43 -0400 (EDT) Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: Message-ID: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Hola, quisiera poder comprobar que una determinada URL existe y es accesible, pero sin 'descargar' su contenido, simplemente comprobar que el server está activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero sin tener que descargar su contenido. Podría hacer un simple wget the la URL y ver si funciona, pero no me interesa. Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la metainformación contenida en el HEAD. En principio eso seria suficiente. Ejemplo: $ curl --head http://www.google.com HTTP/1.0 200 OK Date: Fri, 02 Apr 2010 15:00:37 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com Set-Cookie: NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; HttpOnly Server: gws X-XSS-Protection: 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close $ curl --head http://www.google.comm HTTP/1.0 503 Service Unavailable Server: squid/3.0.STABLE8 Mime-Version: 1.0 Date: Fri, 02 Apr 2010 15:08:02 GMT Content-Type: text/html Content-Length: 1823 Expires: Fri, 02 Apr 2010 15:08:02 GMT X-Squid-Error: ERR_DNS_FAIL 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado claro cómo puedo validar la URL a partir de este tipo de resultados. He estado mirando un poco las clases urllib y urllib2, pero no acabo de ver cómo puedo hacer la validación sin que el contenido de la URL se descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo validar una URL sin necesidad de descargar su contenido, válido para python2.3, estaré eternamente agradecido. Muchas gracias. Saludos cordiales, Jose Hola Jose, la primera linea no siempre contiene OK, pero no puedes obtener el código de respuesta e interpretarlo? En el primer caso el código es 200 y en el segundo 503, utiliza las expresiones regulares. Ejemplo: (HTTP/\d\.\d)\s(\d{3}) en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. import re reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") match = reobj.search(primera_linea) if match:        version = match.group(1)        codigo = match.group(2) Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jredrejo en debian.org Fri Apr 2 19:31:47 2010 From: jredrejo en debian.org (=?UTF-8?Q?Jos=C3=A9_Luis_Redrejo_Rodr=C3=ADguez?=) Date: Fri, 2 Apr 2010 19:31:47 +0200 Subject: [Python-es] =?utf-8?q?C=C3=B3mo_determinar_mi_ip=3F?= In-Reply-To: <1161.10.14.19.12.1270211916.squirrel@correo.ucf.edu.cu> References: <1507.10.14.19.12.1270145271.squirrel@correo.ucf.edu.cu> <4BB4E7DF.3040207@gmail.com> <2009.10.14.19.12.1270148677.squirrel@correo.ucf.edu.cu> <4BB4F71B.5040703@gmail.com> <4BB5CD76.5020704@soft-com.es> <4BB5D1B9.40407@gmail.com> <4BB5D787.4070506@soft-com.es> <4BB5D88A.1040706@gmail.com> <1161.10.14.19.12.1270211916.squirrel@correo.ucf.edu.cu> Message-ID: El día 2 de abril de 2010 14:38, Boris Perez Canedo escribió: >> Yo preparé dos funciones para esto: una que me da la ip pasándole el >> interfaz de red, y otra que me da la ip pasándole una ip a la que >> quiero acceder. Con lo que si hay un interfaz de red para salir a >> internet y otro para la red local, puedo usar el que necesite. Para >> salir a internet, le paso por defecto el valor de uno de los DNS root >> mundiales, pero valdría cualquier ip que sepas que está en internet. >> >> def get_ip_inet_address(connection_ip='198.41.0.4'): >> """Returns the ip address of the interface used to connect to the given ip >> >> 198.41.0.4 is a DNS ROOT Server, so it's the default value to >> connect to Internet >> """ >> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) >> s.connect((connection_ip, 0)) >> inet_address= s.getsockname()[0] >> s.close() >> logging.getLogger().debug("Inet Address:" + inet_address) >> return inet_address >> >> >> Si necesitas la que calcula la ip de un interfaz, dímelo. >> > Ok, Gracias, me puedes enviar la otra si no te es molestia :) > Ninguna molestia: def get_ip_address(ifname): """Returns the ip address of the interface ifname""" s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: ip= socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24] ) except: ip='' return ip From pdlopez en uci.cu Fri Apr 2 19:32:31 2010 From: pdlopez en uci.cu (Pavel Daniel Lopez Castillo) Date: Fri, 2 Apr 2010 13:32:31 -0400 (CDT) Subject: [Python-es] MysqlDB In-Reply-To: <201004021006.00503.guillem@alcarrer.net> Message-ID: <1401967342.164061270229551094.JavaMail.root@ucimail1.uci.cu> Si lo que quiero es el API de python para conectarme a Mysql es para poder poner import MysqlDB ----- Mensaje original ----- De: "Guillem Barba" Para: "La lista de python en castellano" Enviados: Viernes, 2 de Abril 2010 9:06:00 GMT -04:00 Georgetown Asunto: Re: [Python-es] MysqlDB A Divendres 02 Abril 2010 09:18:45, Boris Perez Canedo va escriure: > Donde se > puede descargar MysqlDB para python2.5 y windows, he buscado en internet y > ningun vinculo me ha pinchado, en sourceforge no lo puedo descargar porque > para mi esta bloqueado?? No sé si estás preguntando por una librería o por el SDGB MySql (el servidor de bases de datos, vaya. Si es esto último, en www.mysql.org http://dev.mysql.com/downloads/mysql/#downloads http://dev.mysql.com/downloads/python.html abrazo! -- Guillem Barba guillem en alcarrer.net http://www.guillem.alcarrer.net L'Hospitalet de Llobregat - Catalunya _______________________________________________ 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 juanmarceloconca en gmail.com Fri Apr 2 19:36:37 2010 From: juanmarceloconca en gmail.com (juan marcelo conca) Date: Fri, 2 Apr 2010 14:36:37 -0300 Subject: [Python-es] MysqlDB In-Reply-To: <201004021006.00503.guillem@alcarrer.net> References: <1145145091.212301270154330529.JavaMail.root@ucimail1.uci.cu> <1098.10.14.19.12.1270210725.squirrel@correo.ucf.edu.cu> <201004021006.00503.guillem@alcarrer.net> Message-ID: Si te referís al módulo para conectar mysql con python2.5 esto creo que es lo que buscas. Un saludo y avisa si te funcionó. http://cdlibre.org/consultar/catalogo/Python_Bases-de-datos.html -- Machi Conca. From pdlopez en uci.cu Fri Apr 2 19:55:31 2010 From: pdlopez en uci.cu (Pavel Daniel Lopez Castillo) Date: Fri, 2 Apr 2010 13:55:31 -0400 (CDT) Subject: [Python-es] MysqlDB In-Reply-To: Message-ID: <1861598534.172981270230931670.JavaMail.root@ucimail1.uci.cu> El vinculo va a sourceforge y porque a no se quien le dio la gana, Cuba no puede descargar nada de ahi ahora. Si te referís al módulo para conectar mysql con python2.5 esto creo que es lo que buscas. Un saludo y avisa si te funcionó. http://cdlibre.org/consultar/catalogo/Python_Bases-de-datos.html -- Machi Conca. _______________________________________________ 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 juanmarceloconca en gmail.com Fri Apr 2 19:59:22 2010 From: juanmarceloconca en gmail.com (juan marcelo conca) Date: Fri, 2 Apr 2010 14:59:22 -0300 Subject: [Python-es] MysqlDB In-Reply-To: <1401967342.164061270229551094.JavaMail.root@ucimail1.uci.cu> References: <201004021006.00503.guillem@alcarrer.net> <1401967342.164061270229551094.JavaMail.root@ucimail1.uci.cu> Message-ID: Entonces descargate eso que te mandé que es justo lo que necesitas. Un saludo. -- Machi Conca. From juanmarceloconca en gmail.com Fri Apr 2 20:03:18 2010 From: juanmarceloconca en gmail.com (juan marcelo conca) Date: Fri, 2 Apr 2010 15:03:18 -0300 Subject: [Python-es] MysqlDB In-Reply-To: <1861598534.172981270230931670.JavaMail.root@ucimail1.uci.cu> References: <1861598534.172981270230931670.JavaMail.root@ucimail1.uci.cu> Message-ID: Ok. si me esperas cinco minutos lo subo a otro lado y te paso el enlace....¿te parece? un saludo. -- Machi Conca. From jjlorenzo en uci.cu Fri Apr 2 20:11:15 2010 From: jjlorenzo en uci.cu (=?UTF-8?B?Sm9zw6kgSm9yZ2UgTG9yZW56byBWaWxh?=) Date: Fri, 02 Apr 2010 14:11:15 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: <4BB63343.1020106@uci.cu> Django tiene un URLField que hace lo que quieres, puedes remitirte al código de validación del campo. En estos momentos tengo que impartir una clase, por eso estoy apurado y no te busco el código en cuestión. saludos From inf200523 en ucf.edu.cu Fri Apr 2 20:11:44 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 14:11:44 -0400 (EDT) Subject: [Python-es] MysqlDB In-Reply-To: <1861598534.172981270230931670.JavaMail.root@ucimail1.uci.cu> References: <1861598534.172981270230931670.JavaMail.root@ucimail1.uci.cu> Message-ID: <1103.10.14.19.12.1270231904.squirrel@correo.ucf.edu.cu> El vinculo va a sourceforge y porque a no se quien le dio la gana, Cuba no puede descargar nada de ahi ahora. Si te referís al módulo para conectar mysql con python2.5 esto creo que es lo que buscas. Un saludo y avisa si te funcionó. http://cdlibre.org/consultar/catalogo/Python_Bases-de-datos.html -- No te incomodes y usa www.vtunnel .com (Te va a permitir saltarte ese problemita) , creo que puedes descargar hasta 4 M, no creo que el Modulo para mysql se lleve tanto. Copia el vinculo y pegalo en vtunnel para que puedas descargarlo. Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From juanmarceloconca en gmail.com Fri Apr 2 20:20:41 2010 From: juanmarceloconca en gmail.com (juan marcelo conca) Date: Fri, 2 Apr 2010 15:20:41 -0300 Subject: [Python-es] MysqlDB In-Reply-To: <1103.10.14.19.12.1270231904.squirrel@correo.ucf.edu.cu> References: <1861598534.172981270230931670.JavaMail.root@ucimail1.uci.cu> <1103.10.14.19.12.1270231904.squirrel@correo.ucf.edu.cu> Message-ID: Este es el enlace...espero puedas solucionarlo. Un saludo y comentame si te sirvió. http://www.4shared.com/file/255438484/31f35fb1/MySQL-python-122win32-py25.html -- Machi Conca. From pdlopez en uci.cu Fri Apr 2 20:36:59 2010 From: pdlopez en uci.cu (Pavel Daniel Lopez Castillo) Date: Fri, 2 Apr 2010 14:36:59 -0400 (CDT) Subject: [Python-es] MysqlDB In-Reply-To: Message-ID: <2020930966.189381270233419394.JavaMail.root@ucimail1.uci.cu> ok gracias, me sirvio Este es el enlace...espero puedas solucionarlo. Un saludo y comentame si te sirvió. http://www.4shared.com/file/255438484/31f35fb1/MySQL-python-122win32-py25.html -- Machi Conca. _______________________________________________ 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 jcaballero.hep en gmail.com Fri Apr 2 21:06:48 2010 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Fri, 2 Apr 2010 15:06:48 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: El 2 de abril de 2010 11:45, Boris Perez Canedo escribió: > Hola, > > quisiera poder comprobar que una determinada URL existe y es accesible, > pero sin 'descargar' su contenido, simplemente comprobar que el server está > activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero > sin tener que descargar su contenido. Podría hacer un simple wget the la URL > y ver si funciona, pero no me interesa. > > Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la > metainformación contenida en el HEAD. En principio eso seria suficiente. > Ejemplo: > > $ curl --head http://www.google.com > HTTP/1.0 200 OK > Date: Fri, 02 Apr 2010 15:00:37 GMT > Expires: -1 > Cache-Control: private, max-age=0 > Content-Type: text/html; charset=ISO-8859-1 > Set-Cookie: > PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; > expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com > Set-Cookie: > NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; > expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; > HttpOnly > Server: gws > X-XSS-Protection: 0 > X-Cache: MISS from httpproxy4.bnl.vip > X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 > Proxy-Connection: close > > $ curl --head http://www.google.comm > HTTP/1.0 503 Service Unavailable > Server: squid/3.0.STABLE8 > Mime-Version: 1.0 > Date: Fri, 02 Apr 2010 15:08:02 GMT > Content-Type: text/html > Content-Length: 1823 > Expires: Fri, 02 Apr 2010 15:08:02 GMT > X-Squid-Error: ERR_DNS_FAIL 0 > X-Cache: MISS from httpproxy4.bnl.vip > X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 > Proxy-Connection: close > > Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre la > primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado > claro cómo puedo validar la URL a partir de este tipo de resultados. > > He estado mirando un poco las clases urllib y urllib2, pero no acabo de ver > cómo puedo hacer la validación sin que el contenido de la URL se descargue > cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo validar > una URL sin necesidad de descargar su contenido, válido para python2.3, > estaré eternamente agradecido. > > > Muchas gracias. Saludos cordiales, > > Jose > > Hola Jose, > > la primera linea no siempre contiene OK, pero no puedes obtener el código > de respuesta e interpretarlo? > > En el primer caso el código es 200 > y en el segundo 503, utiliza las expresiones regulares. > > Ejemplo: > (HTTP/\d\.\d)\s(\d{3}) > en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. > > import re > reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") > > match = reobj.search(primera_linea) > > if match: > version = match.group(1) > codigo = match.group(2) > > > > Saludos, > Boris. > > Hola Boris, eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el mismo número, o al menos un conjunto conocido de números, eso me vale. Gracias, Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Fri Apr 2 21:10:01 2010 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Fri, 2 Apr 2010 15:10:01 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: El 2 de abril de 2010 15:06, Jose Caballero escribió: > > > El 2 de abril de 2010 11:45, Boris Perez Canedo escribió: > > Hola, >> >> quisiera poder comprobar que una determinada URL existe y es accesible, >> pero sin 'descargar' su contenido, simplemente comprobar que el server está >> activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero >> sin tener que descargar su contenido. Podría hacer un simple wget the la URL >> y ver si funciona, pero no me interesa. >> >> Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la >> metainformación contenida en el HEAD. En principio eso seria suficiente. >> Ejemplo: >> >> $ curl --head http://www.google.com >> HTTP/1.0 200 OK >> Date: Fri, 02 Apr 2010 15:00:37 GMT >> Expires: -1 >> Cache-Control: private, max-age=0 >> Content-Type: text/html; charset=ISO-8859-1 >> Set-Cookie: >> PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; >> expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com >> Set-Cookie: >> NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; >> expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; >> HttpOnly >> Server: gws >> X-XSS-Protection: 0 >> X-Cache: MISS from httpproxy4.bnl.vip >> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >> Proxy-Connection: close >> >> $ curl --head http://www.google.comm >> HTTP/1.0 503 Service Unavailable >> Server: squid/3.0.STABLE8 >> Mime-Version: 1.0 >> Date: Fri, 02 Apr 2010 15:08:02 GMT >> Content-Type: text/html >> Content-Length: 1823 >> Expires: Fri, 02 Apr 2010 15:08:02 GMT >> X-Squid-Error: ERR_DNS_FAIL 0 >> X-Cache: MISS from httpproxy4.bnl.vip >> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >> Proxy-Connection: close >> >> Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre la >> primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado >> claro cómo puedo validar la URL a partir de este tipo de resultados. >> >> He estado mirando un poco las clases urllib y urllib2, pero no acabo de >> ver cómo puedo hacer la validación sin que el contenido de la URL se >> descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo >> validar una URL sin necesidad de descargar su contenido, válido para >> python2.3, estaré eternamente agradecido. >> >> >> Muchas gracias. Saludos cordiales, >> >> Jose >> >> Hola Jose, >> >> la primera linea no siempre contiene OK, pero no puedes obtener el código >> de respuesta e interpretarlo? >> >> En el primer caso el código es 200 >> y en el segundo 503, utiliza las expresiones regulares. >> >> Ejemplo: >> (HTTP/\d\.\d)\s(\d{3}) >> en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. >> >> import re >> reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") >> >> match = reobj.search(primera_linea) >> >> if match: >> version = match.group(1) >> codigo = match.group(2) >> >> >> >> Saludos, >> Boris. >> >> > Hola Boris, > > eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el > mismo número, o al menos un conjunto conocido de números, eso me vale. > > > Gracias, > Jose > > Me respondo yo mismo: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html Muchas gracias por todo. Saludos, Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Fri Apr 2 21:12:03 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Fri, 2 Apr 2010 21:12:03 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: El día 2 de abril de 2010 14:32, monoBOT escribió: > Tengo el problema siguiente: > no consigo guardar información en un fichero xml desde python, la > codificación de python es la > # -*- coding: cp1252 -*- > > y la de xml > > El problema es con las tildes. > Ya he creado las funciones para evita que se graben caracteres como & o < >. > Deberías darnos más datos. Cuál es el error? Cómo creas el fichero xml? Normalmente xml se maneja internamente como unicode. Luego al serializar, tú decides el encoding que vas a utilizar. Para utilizar caracteres especiales, sueles tener funciones de escape ya creadas en las librerías o también puedes utilizar secciones CDATA. -- lm > -- > monobotblog.alvarezalonso.es > _______________________________________________ > 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 pyarnau en gmail.com Fri Apr 2 21:15:39 2010 From: pyarnau en gmail.com (Arnau Sanchez) Date: Fri, 02 Apr 2010 21:15:39 +0200 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: Message-ID: <4BB6425B.6030901@gmail.com> On 02/04/10 17:06, Jose Caballero wrote: > $ curl --head http://www.google.comm > HTTP/1.0 503 Service Unavailable Creo que han salido ya algunas soluciones con Python. Sobre cómo obtener el código HTTP de respuesta con curl (siguiendo redirecciones), una propuesta: $ curl -s -L --head -w "%{http_code}\n" http://www.google.com/aaa | tail -n1 404 From juanmarceloconca en gmail.com Fri Apr 2 21:29:32 2010 From: juanmarceloconca en gmail.com (juan marcelo conca) Date: Fri, 2 Apr 2010 16:29:32 -0300 Subject: [Python-es] MysqlDB In-Reply-To: <2020930966.189381270233419394.JavaMail.root@ucimail1.uci.cu> References: <2020930966.189381270233419394.JavaMail.root@ucimail1.uci.cu> Message-ID: Me alegro mucho que te haya servido.....estoy acá para ayudar. Un abrazo. -- Machi Conca. From inf200523 en ucf.edu.cu Fri Apr 2 21:26:16 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 15:26:16 -0400 (EDT) Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: <1461.10.14.19.12.1270236376.squirrel@correo.ucf.edu.cu> El 2 de abril de 2010 11:45, Boris Perez Canedo inf200523 en ucf.edu.cu> escribió:   Hola, quisiera poder comprobar que una determinada URL existe y es accesible, pero sin 'descargar' su contenido, simplemente comprobar que el server está activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero sin tener que descargar su contenido. Podría hacer un simple wget the la URL y ver si funciona, pero no me interesa. Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la metainformación contenida en el HEAD. En principio eso seria suficiente. Ejemplo: $ curl --head http://www.google.com HTTP/1.0 200 OK Date: Fri, 02 Apr 2010 15:00:37 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com Set-Cookie: NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; HttpOnly Server: gws X-XSS-Protection: 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close $ curl --head http://www.google.comm HTTP/1.0 503 Service Unavailable Server: squid/3.0.STABLE8 Mime-Version: 1.0 Date: Fri, 02 Apr 2010 15:08:02 GMT Content-Type: text/html Content-Length: 1823 Expires: Fri, 02 Apr 2010 15:08:02 GMT X-Squid-Error: ERR_DNS_FAIL 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado claro cómo puedo validar la URL a partir de este tipo de resultados. He estado mirando un poco las clases urllib y urllib2, pero no acabo de ver cómo puedo hacer la validación sin que el contenido de la URL se descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo validar una URL sin necesidad de descargar su contenido, válido para python2.3, estaré eternamente agradecido. Muchas gracias. Saludos cordiales, Jose Hola Jose, la primera linea no siempre contiene OK, pero no puedes obtener el código de respuesta e interpretarlo? En el primer caso el código es 200 y en el segundo 503, utiliza las expresiones regulares. Ejemplo: (HTTP/\d\.\d)\s(\d{3}) en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. import re reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") match = reobj.search(primera_linea) if match:        version = match.group(1)        codigo = match.group(2)   Saludos, Boris.   Hola Boris, eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el mismo número, o al menos un conjunto conocido de números, eso me vale. Gracias, Jose Sé que es un conjunto conocido de números (c'odigos de estado del protocolo http), no los "conozco" todos habría que investigarlos, pero sí 200 significa que está bien, por ejemplo si la memoria no me falla 407 significa que no tienes autorización, el 503 de tu ejemplo tiene una descripcion a continua´ción "Service Unavailable" que me parece muy expl'icita, o sea, la url tiene que estar mal, y es cierto almenos en tu ejemplo www.google.comm  Revisa esta dirección http://en.wikipedia.org/wiki/List_of_HTTP_status_codes, estoy en la escuela y mi conexión es bastante lenta. Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jlbetancourt en estudiantes.uci.cu Fri Apr 2 21:31:15 2010 From: jlbetancourt en estudiantes.uci.cu (Jorge Luis Betancourt Gonzalez) Date: Fri, 2 Apr 2010 15:31:15 -0400 (CDT) Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: <4BB63343.1020106@uci.cu> Message-ID: <1043901627.742881270236675639.JavaMail.root@ucimail4.uci.cu> He mirado por curiosidad el cómo Django realiza la validación del URLField y por lo visto utilizan urllib para esto, concretamente: if self.verify_exists: import urllib2 headers = { "Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5", "Accept-Language": "en-us,en;q=0.5", "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", "Connection": "close", "User-Agent": self.user_agent, } try: req = urllib2.Request(value, None, headers) u = urllib2.urlopen(req) except ValueError: raise ValidationError(self.error_messages['invalid']) except: # urllib2.URLError, httplib.InvalidURL, etc. raise ValidationError(self.error_messages['invalid_link']) Curioso lo sencillo que lo implementan, ahora mi pregunta sería ¿en este caso urllib descarga la página? slds -- "It is only in the mysterious equation of love that any logical reasons can be found." "Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)" ----- Mensaje original ----- De: "José Jorge Lorenzo Vila" Para: "La lista de python en castellano" Enviados: Viernes, 2 de Abril 2010 14:11:15 (GMT-0500) Auto-Detected Asunto: Re: [Python-es] validar accesibilidad a una URL sin hacer "download" Django tiene un URLField que hace lo que quieres, puedes remitirte al código de validación del campo. En estos momentos tengo que impartir una clase, por eso estoy apurado y no te busco el código en cuestión. 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/ From inf200523 en ucf.edu.cu Fri Apr 2 21:35:04 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 15:35:04 -0400 (EDT) Subject: [Python-es] Obtener nombre de campos tabla mysql Message-ID: <1491.10.14.19.12.1270236904.squirrel@correo.ucf.edu.cu> Hola, Necesito saber qué consulta realizar para obtener el nombre de los campos de una tabla (mysql). Si es posible claro! Saludos y Gracias por adelantado, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Fri Apr 2 21:30:03 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Fri, 2 Apr 2010 15:30:03 -0400 (EDT) Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: <1481.10.14.19.12.1270236603.squirrel@correo.ucf.edu.cu> El 2 de abril de 2010 15:06, Jose Caballero jcaballero.hep en gmail.com> escribió: El 2 de abril de 2010 11:45, Boris Perez Canedo inf200523 en ucf.edu.cu> escribió:     Hola, quisiera poder comprobar que una determinada URL existe y es accesible, pero sin 'descargar' su contenido, simplemente comprobar que el server está activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero sin tener que descargar su contenido. Podría hacer un simple wget the la URL y ver si funciona, pero no me interesa. Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la metainformación contenida en el HEAD. En principio eso seria suficiente. Ejemplo: $ curl --head http://www.google.com HTTP/1.0 200 OK Date: Fri, 02 Apr 2010 15:00:37 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com Set-Cookie: NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; HttpOnly Server: gws X-XSS-Protection: 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close $ curl --head http://www.google.comm HTTP/1.0 503 Service Unavailable Server: squid/3.0.STABLE8 Mime-Version: 1.0 Date: Fri, 02 Apr 2010 15:08:02 GMT Content-Type: text/html Content-Length: 1823 Expires: Fri, 02 Apr 2010 15:08:02 GMT X-Squid-Error: ERR_DNS_FAIL 0 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado claro cómo puedo validar la URL a partir de este tipo de resultados. He estado mirando un poco las clases urllib y urllib2, pero no acabo de ver cómo puedo hacer la validación sin que el contenido de la URL se descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo validar una URL sin necesidad de descargar su contenido, válido para python2.3, estaré eternamente agradecido. Muchas gracias. Saludos cordiales, Jose Hola Jose, la primera linea no siempre contiene OK, pero no puedes obtener el código de respuesta e interpretarlo? En el primer caso el código es 200 y en el segundo 503, utiliza las expresiones regulares. Ejemplo: (HTTP/\d\.\d)\s(\d{3}) en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. import re reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") match = reobj.search(primera_linea) if match:        version = match.group(1)        codigo = match.group(2)   Saludos, Boris.   Hola Boris, eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el mismo número, o al menos un conjunto conocido de números, eso me vale. Gracias, Jose Me respondo yo mismo: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html Muchas gracias por todo. Saludos, Jose Ok, fue un placer. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From monobot.soft en gmail.com Fri Apr 2 21:50:31 2010 From: monobot.soft en gmail.com (monoBOT) Date: Fri, 2 Apr 2010 20:50:31 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: Muchas gracias a todos! Lo he resuelto de la siguiente forma: he modificado el sitecustomize.py poniéndole esto... import syssys.setdefaultencoding('iso-8859-1') ahora python puede guardar los caracteres especiales directamente (antes lo intentaba como ascii y pr eso daba el error) y como xml funciona con unicode lo admite sin problemas. -- monobotblog.alvarezalonso.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Fri Apr 2 22:15:37 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Fri, 2 Apr 2010 22:15:37 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: El día 2 de abril de 2010 21:50, monoBOT escribió: > Muchas gracias a todos! > Lo he resuelto de la siguiente forma: > he modificado el sitecustomize.py  poniéndole esto... > > import sys > sys.setdefaultencoding('iso-8859-1') > > ahora python puede guardar los caracteres especiales directamente (antes lo > intentaba como ascii y pr eso daba el error) y como xml funciona con unicode > lo admite sin problemas. Eso significa que el problema lo tenías por el manejo del unicode dentro de tu programa. Ten cuidado con esa solución, podría generarte problemas si tienes que tratar con otro encoding. -- lm > -- > monobotblog.alvarezalonso.es > _______________________________________________ > 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 juanmarceloconca en gmail.com Fri Apr 2 22:29:38 2010 From: juanmarceloconca en gmail.com (juan marcelo conca) Date: Fri, 2 Apr 2010 17:29:38 -0300 Subject: [Python-es] Obtener nombre de campos tabla mysql In-Reply-To: <1491.10.14.19.12.1270236904.squirrel@correo.ucf.edu.cu> References: <1491.10.14.19.12.1270236904.squirrel@correo.ucf.edu.cu> Message-ID: Te referís a esto? :mysql> describe "nombre de la tabla"; Un saludo y avisa si te funcionó. -- Machi Conca. From monobot.soft en gmail.com Fri Apr 2 23:54:01 2010 From: monobot.soft en gmail.com (monoBOT) Date: Fri, 2 Apr 2010 22:54:01 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: Y que me recomiendas? mi programa es bastante sencillo tengo un fichero .py con # -*- coding: iso-8859-1 -*- en el encabezado y cuando guardo los archivos xml lo hago con encoding='iso-8859-1' es decir que el archivo xml se graba con este encabezado pero aun así al guardar campos en el xml con tildes u otros caracteres no ascii me daba error. El 2 de abril de 2010 21:15, Luis Miguel Morillas escribió: > El día 2 de abril de 2010 21:50, monoBOT > escribió: > > Muchas gracias a todos! > > Lo he resuelto de la siguiente forma: > > he modificado el sitecustomize.py poniéndole esto... > > > > import sys > > sys.setdefaultencoding('iso-8859-1') > > > > ahora python puede guardar los caracteres especiales directamente (antes > lo > > intentaba como ascii y pr eso daba el error) y como xml funciona con > unicode > > lo admite sin problemas. > > Eso significa que el problema lo tenías por el manejo del unicode > dentro de tu programa. Ten cuidado con esa solución, podría generarte > problemas si tienes que tratar con otro encoding. > > -- lm > > > > > -- > > monobotblog.alvarezalonso.es > > _______________________________________________ > > 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/ > -- monobotblog.alvarezalonso.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Sat Apr 3 00:12:56 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Sat, 3 Apr 2010 00:12:56 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: El día 2 de abril de 2010 23:54, monoBOT escribió: > Y que me recomiendas? mi programa es bastante sencillo tengo un fichero .py > con # -*- coding: iso-8859-1 -*- en el encabezado y cuando guardo los > archivos xml lo hago con  encoding='iso-8859-1' es decir que el archivo xml > se graba con este encabezado  > pero aun así al guardar campos en el xml con tildes u otros caracteres no > ascii me daba error. > ¿Cómo es tu programa? ¿Qué es lo que guardas? El # -*- coding ... afecta a tu código python. El problema seguramente viene del manejo de la librería de xml que usas. -- lm > El 2 de abril de 2010 21:15, Luis Miguel Morillas > escribió: >> >> El día 2 de abril de 2010 21:50, monoBOT >> escribió: >> > Muchas gracias a todos! >> > Lo he resuelto de la siguiente forma: >> > he modificado el sitecustomize.py  poniéndole esto... >> > >> > import sys >> > sys.setdefaultencoding('iso-8859-1') >> > >> > ahora python puede guardar los caracteres especiales directamente (antes >> > lo >> > intentaba como ascii y pr eso daba el error) y como xml funciona con >> > unicode >> > lo admite sin problemas. >> >> Eso significa que el problema lo tenías por el manejo del unicode >> dentro de tu programa. Ten cuidado con esa solución, podría generarte >> problemas si tienes que tratar con otro encoding. >> >> -- lm >> >> >> >> > -- >> > monobotblog.alvarezalonso.es >> > _______________________________________________ >> > 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/ > > > > -- > monobotblog.alvarezalonso.es > _______________________________________________ > 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 monobot.soft en gmail.com Sat Apr 3 02:17:28 2010 From: monobot.soft en gmail.com (monoBOT) Date: Sat, 3 Apr 2010 01:17:28 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: el programa es muy sencillo, es un programa con entorno wxpython, son una serie de pantallas donde el usuario va metiendo datos (nombre apellido, dni población etc... toda esta información va a un fichero de texto xml... la siguiente vez que el usuario abre se cargan automaticamente las respuestas anteriores. el objetivo final es completar todos los datos que ha metido el usuario con una normativa para efectuar una memoria a imprimir. no se si te sirve de algo mi respuesta. El 2 de abril de 2010 23:12, Luis Miguel Morillas escribió: > El día 2 de abril de 2010 23:54, monoBOT > escribió: > > Y que me recomiendas? mi programa es bastante sencillo tengo un fichero > .py > > con # -*- coding: iso-8859-1 -*- en el encabezado y cuando guardo los > > archivos xml lo hago con encoding='iso-8859-1' es decir que el archivo > xml > > se graba con este encabezado > > pero aun así al guardar campos en el xml con tildes u otros caracteres no > > ascii me daba error. > > > > ¿Cómo es tu programa? ¿Qué es lo que guardas? El # -*- coding ... > afecta a tu código python. El problema seguramente viene del manejo de > la librería de xml que usas. > > -- lm > > > > El 2 de abril de 2010 21:15, Luis Miguel Morillas > > escribió: > >> > >> El día 2 de abril de 2010 21:50, monoBOT > >> escribió: > >> > Muchas gracias a todos! > >> > Lo he resuelto de la siguiente forma: > >> > he modificado el sitecustomize.py poniéndole esto... > >> > > >> > import sys > >> > sys.setdefaultencoding('iso-8859-1') > >> > > >> > ahora python puede guardar los caracteres especiales directamente > (antes > >> > lo > >> > intentaba como ascii y pr eso daba el error) y como xml funciona con > >> > unicode > >> > lo admite sin problemas. > >> > >> Eso significa que el problema lo tenías por el manejo del unicode > >> dentro de tu programa. Ten cuidado con esa solución, podría generarte > >> problemas si tienes que tratar con otro encoding. > >> > >> -- lm > >> > >> > >> > >> > -- > >> > monobotblog.alvarezalonso.es > >> > _______________________________________________ > >> > 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/ > > > > > > > > -- > > monobotblog.alvarezalonso.es > > _______________________________________________ > > 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/ > -- Héctor Alvarez Arquitecto Advertencia legal: De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de carácter Personal le informamos que: Este correo electrónico contiene información privada y estrictamente confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, directa o indirectamente, usar, revelar, distribuir, imprimir o copiar ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail y proceda a borrar de su sistema inmediatamente el mensaje así como todas sus copias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lowlifebob en gmail.com Sat Apr 3 03:19:44 2010 From: lowlifebob en gmail.com (lopz) Date: Fri, 2 Apr 2010 20:49:44 -0430 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: Hola Y no era mejor utilizar sqlite? si es para algo más grande tiraría de MySQL Saludos! -- lopz es libre, usa --> GNU/linux gentoo +--[RSA 2048]--+ | ..o.o=+ | | o =o*.+ | | . . *oO . | | .EBoo | | o.S | +--[lopz.org]--+ From jcaballero.hep en gmail.com Sat Apr 3 04:37:50 2010 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Fri, 2 Apr 2010 22:37:50 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: <1481.10.14.19.12.1270236603.squirrel@correo.ucf.edu.cu> References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> <1481.10.14.19.12.1270236603.squirrel@correo.ucf.edu.cu> Message-ID: <6D059FB9-6793-43DB-A0FF-44BB4820E89C@gmail.com> On Apr 2, 2010, at 15:30, "Boris Perez Canedo" wrote: > > > El 2 de abril de 2010 15:06, Jose Caballero > jcaballero.hep en gmail.com> escribió: > > > El 2 de abril de 2010 11:45, Boris Perez Canedo > inf200523 en ucf.edu.cu> escribió: > > > > Hola, > > quisiera poder comprobar que una determinada URL existe y es > accesible, pero sin 'descargar' su contenido, simplemente comprobar > que el server está activo, que el usuario no ha escrito mal la URL ( > sin 'typos'), etc., pero sin tener que descargar su contenido. Podrí > a hacer un simple wget the la URL y ver si funciona, pero no me inte > resa. > > Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelv > e la metainformación contenida en el HEAD. En principio eso seria su > ficiente. Ejemplo: > > $ curl --head http://www.google.com > HTTP/1.0 200 OK > Date: Fri, 02 Apr 2010 15:00:37 GMT > Expires: -1 > Cache-Control: private, max-age=0 > Content-Type: text/html; charset=ISO-8859-1 > Set-Cookie: > PREF= > ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; > expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com > Set-Cookie: NID=33=i_y0e- > Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_- > 9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; expires=Sat, 02- > Oct-2010 15:00:37 GMT; path=/; domain=.google.com; HttpOnly > Server: gws > X-XSS-Protection: 0 > X-Cache: MISS from httpproxy4.bnl.vip > X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 > Proxy-Connection: close > > $ curl --head http://www.google.comm > HTTP/1.0 503 Service Unavailable > Server: squid/3.0.STABLE8 > Mime-Version: 1.0 > Date: Fri, 02 Apr 2010 15:08:02 GMT > Content-Type: text/html > Content-Length: 1823 > Expires: Fri, 02 Apr 2010 15:08:02 GMT > X-Squid-Error: ERR_DNS_FAIL 0 > X-Cache: MISS from httpproxy4.bnl.vip > X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 > Proxy-Connection: close > > Pero de esta forma es necesario hacer demasiado 'parsing', y no > siempre la primera línea contiene "OK" aunque la URL sea válida. No > tengo demasiado claro cómo puedo validar la URL a partir de este tip > o de resultados. > > He estado mirando un poco las clases urllib y urllib2, pero no acabo > de ver cómo puedo hacer la validación sin que el contenido de la URL > se descargue cuando existe. Si alguien tiene algún 'link' a un ejem > plo de cómo validar una URL sin necesidad de descargar su contenido, > válido para python2.3, estaré eternamente agradecido. > > > Muchas gracias. Saludos cordiales, > > Jose > > Hola Jose, > > la primera linea no siempre contiene OK, pero no puedes obtener el c > ódigo de respuesta e interpretarlo? > > En el primer caso el código es 200 > y en el segundo 503, utiliza las expresiones regulares. > > Ejemplo: > (HTTP/\d\.\d)\s(\d{3}) > en el grupo 1 tienes la versión del protocolo y en el grupo 2 el cód > igo. > > import re > reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") > > match = reobj.search(primera_linea) > > if match: > version = match.group(1) > codigo = match.group(2) > > > > > Saludos, > Boris. > > > Hola Boris, > > eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre > el mismo número, o al menos un conjunto conocido de números, eso me > vale. > > > Gracias, > Jose > > > > Me respondo yo mismo: > http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html > > > Muchas gracias por todo. > Saludos, > Jose > > > Ok, fue un placer. Bueno, ahora me gustaria poder hacerlo con alguna libreria de python para no tener que depender de que curl este instalado. En el hilo se ha comentado urllib. Yo ya habia investigado esa via, pero sigo teniendo el mismo problema: no estoy seguro de que el contenido de la url no se esta descargando. En cualquier caso, gracias por todo. Jose PS: perdon por la ausencia de tildes en este mensaje. Teclado americano en este caso. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From darkrho en gmail.com Sat Apr 3 05:02:38 2010 From: darkrho en gmail.com (Rolando Espinoza La Fuente) Date: Fri, 2 Apr 2010 22:32:38 -0430 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: <6D059FB9-6793-43DB-A0FF-44BB4820E89C@gmail.com> References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> <1481.10.14.19.12.1270236603.squirrel@correo.ucf.edu.cu> <6D059FB9-6793-43DB-A0FF-44BB4820E89C@gmail.com> Message-ID: 2010/4/2 Jose Caballero : [SNIP] > Bueno, ahora me gustaria poder hacerlo con alguna libreria de python para no > tener que depender de que curl este instalado. En el hilo se ha comentado > urllib. Yo ya habia investigado esa via, pero sigo teniendo el mismo > problema: no estoy seguro de que el contenido de la url no se esta > descargando. How to do a Http HEAD requests http://www.mail-archive.com/python-list en python.org/msg123224.html Utilizando el método HEAD es el servidor que no retorna contenido, sólo los headers. Pero en tu ejemplo, el caso de un dominio no existente te retorna el error el proxy. Si quieres saber si una url es válida, entonces yo haría: - verificar primero con una expresión regular - verificar que el dominio resuelve a ip - verificar que el path existe con urllib2 y method HEAD Pero el último paso es sensible a errores. Por que un site te pude retornar 200 OK aún cuando no existe la página, es decir muestran en el html un error pero en el header status no ponen 404 Y tambien considerar los 301/302, por defecto urllib2 sigue las redirecciones. Podrías encontrarte el caso de que una url no existe se redirecciona a otra página. como /not-exists/ -> /search/ urllib2 te puede lanzar URLError si el dominio no existe o si la url es inválida. Mis dos centavos :) ~Rolando From morillas en gmail.com Sat Apr 3 08:02:20 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Sat, 3 Apr 2010 08:02:20 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: El día 3 de abril de 2010 02:17, monoBOT escribió: > el programa es muy sencillo, es un programa con entorno wxpython, son una > serie de pantallas donde el usuario va metiendo datos (nombre apellido, dni > población etc... toda esta información va a un fichero de texto xml... la > siguiente vez que el usuario abre se cargan automaticamente las respuestas > anteriores. el objetivo final es completar todos los datos que ha metido el > usuario con una normativa para efectuar una memoria a imprimir. > no se si te sirve de algo mi respuesta. Y cómo se crea ese xml? "a mano"? Qué línea de código genera el error? Qué error ves? -- lm > El 2 de abril de 2010 23:12, Luis Miguel Morillas > escribió: >> >> El día 2 de abril de 2010 23:54, monoBOT >> escribió: >> > Y que me recomiendas? mi programa es bastante sencillo tengo un fichero >> > .py >> > con # -*- coding: iso-8859-1 -*- en el encabezado y cuando guardo los >> > archivos xml lo hago con  encoding='iso-8859-1' es decir que el archivo >> > xml >> > se graba con este encabezado  >> > pero aun así al guardar campos en el xml con tildes u otros caracteres >> > no >> > ascii me daba error. >> > >> >>  ¿Cómo es tu programa? ¿Qué es lo que guardas? El   # -*- coding ... >> afecta a tu código python. El problema seguramente viene del manejo de >> la librería de xml que usas. >> >> -- lm >> >> >> > El 2 de abril de 2010 21:15, Luis Miguel Morillas >> > escribió: >> >> >> >> El día 2 de abril de 2010 21:50, monoBOT >> >> escribió: >> >> > Muchas gracias a todos! >> >> > Lo he resuelto de la siguiente forma: >> >> > he modificado el sitecustomize.py  poniéndole esto... >> >> > >> >> > import sys >> >> > sys.setdefaultencoding('iso-8859-1') >> >> > >> >> > ahora python puede guardar los caracteres especiales directamente >> >> > (antes >> >> > lo >> >> > intentaba como ascii y pr eso daba el error) y como xml funciona con >> >> > unicode >> >> > lo admite sin problemas. >> >> >> >> Eso significa que el problema lo tenías por el manejo del unicode >> >> dentro de tu programa. Ten cuidado con esa solución, podría generarte >> >> problemas si tienes que tratar con otro encoding. >> >> >> >> -- lm >> >> >> >> >> >> >> >> > -- >> >> > monobotblog.alvarezalonso.es >> >> > _______________________________________________ >> >> > 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/ >> > >> > >> > >> > -- >> > monobotblog.alvarezalonso.es >> > _______________________________________________ >> > 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/ > > > > -- > Héctor Alvarez > Arquitecto > > Advertencia legal: > De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de > carácter Personal le informamos que: > Este correo electrónico contiene información privada y estrictamente > confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, > directa o indirectamente, usar, revelar, distribuir, imprimir o copiar > ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido > este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail > y proceda a borrar de su sistema inmediatamente el mensaje así como todas > sus copias. > > _______________________________________________ > 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 monobot.soft en gmail.com Sat Apr 3 12:50:11 2010 From: monobot.soft en gmail.com (monoBOT) Date: Sat, 3 Apr 2010 11:50:11 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: el error que da es el siguiente: la linea que da error es: File "J:\03 TRABAJO\06 PYTHON\PRUEBAS\21.py", line 83, in guarda_datos arbol_gral.writexml(fichero, encoding='iso-8859-1') el error es: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128) python graba todo el arbol dom del fichero cuando lo graba. pero el fichero xml originalmente lo monté yo a mano. El 3 de abril de 2010 07:02, Luis Miguel Morillas escribió: > El día 3 de abril de 2010 02:17, monoBOT > escribió: > > el programa es muy sencillo, es un programa con entorno wxpython, son una > > serie de pantallas donde el usuario va metiendo datos (nombre apellido, > dni > > población etc... toda esta información va a un fichero de texto xml... la > > siguiente vez que el usuario abre se cargan automaticamente las > respuestas > > anteriores. el objetivo final es completar todos los datos que ha metido > el > > usuario con una normativa para efectuar una memoria a imprimir. > > no se si te sirve de algo mi respuesta. > > Y cómo se crea ese xml? "a mano"? Qué línea de código genera el error? > Qué error ves? > > -- lm > > > El 2 de abril de 2010 23:12, Luis Miguel Morillas > > escribió: > >> > >> El día 2 de abril de 2010 23:54, monoBOT > >> escribió: > >> > Y que me recomiendas? mi programa es bastante sencillo tengo un > fichero > >> > .py > >> > con # -*- coding: iso-8859-1 -*- en el encabezado y cuando guardo los > >> > archivos xml lo hago con encoding='iso-8859-1' es decir que el > archivo > >> > xml > >> > se graba con este encabezado encoding="iso-8859-1"?> > >> > pero aun así al guardar campos en el xml con tildes u otros caracteres > >> > no > >> > ascii me daba error. > >> > > >> > >> ¿Cómo es tu programa? ¿Qué es lo que guardas? El # -*- coding ... > >> afecta a tu código python. El problema seguramente viene del manejo de > >> la librería de xml que usas. > >> > >> -- lm > >> > >> > >> > El 2 de abril de 2010 21:15, Luis Miguel Morillas > > >> > escribió: > >> >> > >> >> El día 2 de abril de 2010 21:50, monoBOT > >> >> escribió: > >> >> > Muchas gracias a todos! > >> >> > Lo he resuelto de la siguiente forma: > >> >> > he modificado el sitecustomize.py poniéndole esto... > >> >> > > >> >> > import sys > >> >> > sys.setdefaultencoding('iso-8859-1') > >> >> > > >> >> > ahora python puede guardar los caracteres especiales directamente > >> >> > (antes > >> >> > lo > >> >> > intentaba como ascii y pr eso daba el error) y como xml funciona > con > >> >> > unicode > >> >> > lo admite sin problemas. > >> >> > >> >> Eso significa que el problema lo tenías por el manejo del unicode > >> >> dentro de tu programa. Ten cuidado con esa solución, podría generarte > >> >> problemas si tienes que tratar con otro encoding. > >> >> > >> >> -- lm > >> >> > >> >> > >> >> > >> >> > -- > >> >> > monobotblog.alvarezalonso.es > >> >> > _______________________________________________ > >> >> > 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/ > >> > > >> > > >> > > >> > -- > >> > monobotblog.alvarezalonso.es > >> > _______________________________________________ > >> > 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/ > > > > > > > > -- > > Héctor Alvarez > > Arquitecto > > > > Advertencia legal: > > De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de > > carácter Personal le informamos que: > > Este correo electrónico contiene información privada y estrictamente > > confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a > leerlo, > > directa o indirectamente, usar, revelar, distribuir, imprimir o copiar > > ninguna de las partes y/o anexos de éste mensaje. Si por error ha > recibido > > este mensaje, le rogamos lo notifique a su emisor respondiendo a éste > e-mail > > y proceda a borrar de su sistema inmediatamente el mensaje así como todas > > sus copias. > > > > _______________________________________________ > > 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/ > -- Héctor Alvarez Arquitecto Advertencia legal: De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de carácter Personal le informamos que: Este correo electrónico contiene información privada y estrictamente confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, directa o indirectamente, usar, revelar, distribuir, imprimir o copiar ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail y proceda a borrar de su sistema inmediatamente el mensaje así como todas sus copias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Sat Apr 3 19:23:17 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Sat, 3 Apr 2010 19:23:17 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: El día 3 de abril de 2010 12:50, monoBOT escribió: > el error que da es el siguiente: > la linea que da error es: >   File "J:\03 TRABAJO\06 PYTHON\PRUEBAS\21.py", line 83, in guarda_datos >     arbol_gral.writexml(fichero, encoding='iso-8859-1') > el error es: > UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: > ordinal not in range(128) > python graba todo el arbol dom del fichero cuando lo graba. pero el fichero > xml original, ente lo monté yo a mano. OK. Ese es el error que yo te comentaba. Necesito ver la línea 83 y seguramente alguna anterior y posterior. Qué librería xml estás utilizando?. Lo del fichero xml a mano no es ningún problema, las librerías xml te permitirán validar tu documento. -- lm > El 3 de abril de 2010 07:02, Luis Miguel Morillas > escribió: >> >> El día 3 de abril de 2010 02:17, monoBOT >> escribió: >> > el programa es muy sencillo, es un programa con entorno wxpython, son >> > una >> > serie de pantallas donde el usuario va metiendo datos (nombre apellido, >> > dni >> > población etc... toda esta información va a un fichero de texto xml... >> > la >> > siguiente vez que el usuario abre se cargan automaticamente las >> > respuestas >> > anteriores. el objetivo final es completar todos los datos que ha metido >> > el >> > usuario con una normativa para efectuar una memoria a imprimir. >> > no se si te sirve de algo mi respuesta. >> >> Y cómo se crea ese xml? "a mano"? Qué línea de código genera el error? >> Qué error ves? >> >> -- lm >> >> > El 2 de abril de 2010 23:12, Luis Miguel Morillas >> > escribió: >> >> >> >> El día 2 de abril de 2010 23:54, monoBOT >> >> escribió: >> >> > Y que me recomiendas? mi programa es bastante sencillo tengo un >> >> > fichero >> >> > .py >> >> > con # -*- coding: iso-8859-1 -*- en el encabezado y cuando guardo los >> >> > archivos xml lo hago con  encoding='iso-8859-1' es decir que el >> >> > archivo >> >> > xml >> >> > se graba con este encabezado > >> > encoding="iso-8859-1"?> >> >> > pero aun así al guardar campos en el xml con tildes u otros >> >> > caracteres >> >> > no >> >> > ascii me daba error. >> >> > >> >> >> >>  ¿Cómo es tu programa? ¿Qué es lo que guardas? El   # -*- coding ... >> >> afecta a tu código python. El problema seguramente viene del manejo de >> >> la librería de xml que usas. >> >> >> >> -- lm >> >> >> >> >> >> > El 2 de abril de 2010 21:15, Luis Miguel Morillas >> >> > >> >> > escribió: >> >> >> >> >> >> El día 2 de abril de 2010 21:50, monoBOT >> >> >> escribió: >> >> >> > Muchas gracias a todos! >> >> >> > Lo he resuelto de la siguiente forma: >> >> >> > he modificado el sitecustomize.py  poniéndole esto... >> >> >> > >> >> >> > import sys >> >> >> > sys.setdefaultencoding('iso-8859-1') >> >> >> > >> >> >> > ahora python puede guardar los caracteres especiales directamente >> >> >> > (antes >> >> >> > lo >> >> >> > intentaba como ascii y pr eso daba el error) y como xml funciona >> >> >> > con >> >> >> > unicode >> >> >> > lo admite sin problemas. >> >> >> >> >> >> Eso significa que el problema lo tenías por el manejo del unicode >> >> >> dentro de tu programa. Ten cuidado con esa solución, podría >> >> >> generarte >> >> >> problemas si tienes que tratar con otro encoding. >> >> >> >> >> >> -- lm >> >> >> >> >> >> >> >> >> >> >> >> > -- >> >> >> > monobotblog.alvarezalonso.es >> >> >> > _______________________________________________ >> >> >> > 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/ >> >> > >> >> > >> >> > >> >> > -- >> >> > monobotblog.alvarezalonso.es >> >> > _______________________________________________ >> >> > 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/ >> > >> > >> > >> > -- >> > Héctor Alvarez >> > Arquitecto >> > >> > Advertencia legal: >> > De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de >> > carácter Personal le informamos que: >> > Este correo electrónico contiene información privada y estrictamente >> > confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a >> > leerlo, >> > directa o indirectamente, usar, revelar, distribuir, imprimir o copiar >> > ninguna de las partes y/o anexos de éste mensaje. Si por error ha >> > recibido >> > este mensaje, le rogamos lo notifique a su emisor respondiendo a éste >> > e-mail >> > y proceda a borrar de su sistema inmediatamente el mensaje así como >> > todas >> > sus copias. >> > >> > _______________________________________________ >> > 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/ > > > > -- > Héctor Alvarez > Arquitecto > > Advertencia legal: > De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de > carácter Personal le informamos que: > Este correo electrónico contiene información privada y estrictamente > confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, > directa o indirectamente, usar, revelar, distribuir, imprimir o copiar > ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido > este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail > y proceda a borrar de su sistema inmediatamente el mensaje así como todas > sus copias. > > _______________________________________________ > 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 monobot.soft en gmail.com Sun Apr 4 10:26:01 2010 From: monobot.soft en gmail.com (monoBOT) Date: Sun, 4 Apr 2010 09:26:01 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: la línea 83 está en la función de grabado: def grabar(self, event): dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?', 'Atención', wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP) respuesta=dialogo.ShowModal() if (respuesta ==wx.ID_YES): print 'obteniendo valores...' nombres_attr = ['numerocolegiado','nombre', 'primerapellido', 'segundoapellido', 'dni', 'direccion', 'codigopostal', 'poblacion', 'email', 'telefono1', 'telefono2'] datos_entrados = [self.ventana.entranumcol, self.ventana.entranombre, self.ventana.entraapellido1, self.ventana.entraapellido2, self.ventana.entradni, self.ventana.entradirec, self.ventana.entrapost, self.ventana.entrapobl, self.ventana.entraemail, self.ventana.entratf1, self.ventana.entratf2] print 'guardando...' for m in range(len(datos_entrados)): cambia_attrib(arbol='usuario', dato=nombres_attr[m], nuevovalor=reg_xml(datos_entrados[m].GetValue())) nom_empr = ['nombreempresa', 'cifempresa', 'direccionempresa','codigopostalempresa', 'telefonoempresa'] dat_empr = [self.ventana.entranombreempresa, self.ventana.entracifempresa, self.ventana.entradireccionempresa, self.ventana.entracodigopostalempresa, self.ventana.entratelefonoempresa] for m in range(len(nom_empr)): cambia_attrib(arbol='datosempresa', dato=nom_empr[m], nuevovalor=reg_xml(dat_empr[m].GetValue())) cambia_attrib('usuario', 'colegio', reg_xml(self.ventana.entracolegio.GetStringSelection())) cambia_attrib('usuario', 'provincia', reg_xml(self.ventana.entraprov.GetStringSelection())) guarda_datos(datogral) print 'guardado' self.Destroy() else: print 'Cancelado' dialogo.Destroy() la función de grabado lo que hace es llamar a unas variables self.ventana.entranombreempresa todas ellas se montan de esta forma: self.ventana.entranombre = wx.TextCtrl(self.ventana, -1, nombre_en_fichero) y el valor por defecto de cada una proviene del fichero xml también: nombre_en_fichero = xml_none(busqueda_xml ('usuario', 'nombre')) así que lo que hago es: lee xml ---> muestra en pantalla el dato guardado ---> el usuario cambia los datos ---> grabo los datos. las funciones de lectura y guardado de xml son: def busqueda_xml (arbol, dato): valor = arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0].childNodes[0].nodeValue return valor def guarda_datos(archivo): fichero = open(os.path.realpath(archivo), "w") arbol_gral.writexml(fichero, encoding='iso-8859-1') fichero.close() return True la funcion xml_none lo que hace es cambiar una entrada igual a cero por un campo limpio def xml_none(m): if m =='0': n = '' return n return m la función contraria la pongo al grabar y lo que hace es convertir un campo vacío en un 0, y también los caracteres prohibidos por xml por sus sutitutos ... así evito el error al grabar. def reg_xml(m): if m == '': n = '0' return n n = m.replace('&', '&') n = n.replace('<','<') n = n.replace('>','>') return n -- monobotblog.alvarezalonso.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From monobot.soft en gmail.com Sun Apr 4 10:28:02 2010 From: monobot.soft en gmail.com (monoBOT) Date: Sun, 4 Apr 2010 09:28:02 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: olvide poner la funcion que cambia los atributos en el arbol dom: def cambia_attrib(arbol, dato, nuevovalor): nodo_mod = arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0] nodo_mod.childNodes[0].nodeValue = nuevovalor return True -- monobotblog.alvarezalonso.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From necudeco en gmail.com Sun Apr 4 17:36:12 2010 From: necudeco en gmail.com (necudeco) Date: Sun, 4 Apr 2010 11:36:12 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: NO Siempre. Por ejemplo con las url amigables, cuando envias una url inexistente el sistema te devuelve una pagina que visualmente es 404, pero el codigo http que te envia es 200 Saludos 2010/4/2 Jose Caballero > > > El 2 de abril de 2010 11:45, Boris Perez Canedo escribió: > > Hola, >> >> quisiera poder comprobar que una determinada URL existe y es accesible, >> pero sin 'descargar' su contenido, simplemente comprobar que el server está >> activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero >> sin tener que descargar su contenido. Podría hacer un simple wget the la URL >> y ver si funciona, pero no me interesa. >> >> Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la >> metainformación contenida en el HEAD. En principio eso seria suficiente. >> Ejemplo: >> >> $ curl --head http://www.google.com >> HTTP/1.0 200 OK >> Date: Fri, 02 Apr 2010 15:00:37 GMT >> Expires: -1 >> Cache-Control: private, max-age=0 >> Content-Type: text/html; charset=ISO-8859-1 >> Set-Cookie: >> PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; >> expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com >> Set-Cookie: >> NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; >> expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; >> HttpOnly >> Server: gws >> X-XSS-Protection: 0 >> X-Cache: MISS from httpproxy4.bnl.vip >> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >> Proxy-Connection: close >> >> $ curl --head http://www.google.comm >> HTTP/1.0 503 Service Unavailable >> Server: squid/3.0.STABLE8 >> Mime-Version: 1.0 >> Date: Fri, 02 Apr 2010 15:08:02 GMT >> Content-Type: text/html >> Content-Length: 1823 >> Expires: Fri, 02 Apr 2010 15:08:02 GMT >> X-Squid-Error: ERR_DNS_FAIL 0 >> X-Cache: MISS from httpproxy4.bnl.vip >> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >> Proxy-Connection: close >> >> Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre la >> primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado >> claro cómo puedo validar la URL a partir de este tipo de resultados. >> >> He estado mirando un poco las clases urllib y urllib2, pero no acabo de >> ver cómo puedo hacer la validación sin que el contenido de la URL se >> descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo >> validar una URL sin necesidad de descargar su contenido, válido para >> python2.3, estaré eternamente agradecido. >> >> >> Muchas gracias. Saludos cordiales, >> >> Jose >> >> Hola Jose, >> >> la primera linea no siempre contiene OK, pero no puedes obtener el código >> de respuesta e interpretarlo? >> >> En el primer caso el código es 200 >> y en el segundo 503, utiliza las expresiones regulares. >> >> Ejemplo: >> (HTTP/\d\.\d)\s(\d{3}) >> en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. >> >> import re >> reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") >> >> match = reobj.search(primera_linea) >> >> if match: >> version = match.group(1) >> codigo = match.group(2) >> >> >> >> Saludos, >> Boris. >> >> > Hola Boris, > > eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el > mismo número, o al menos un conjunto conocido de números, eso me vale. > > > Gracias, > Jose > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Mario R. Uriarte Amaya 044 949369377 NeCuDeCo Asociacion Peruana de Software Libre http://necudeco.com http://apesol.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Sun Apr 4 18:00:18 2010 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Sun, 4 Apr 2010 12:00:18 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: > > 2010/4/2 Jose Caballero > >> >> >> El 2 de abril de 2010 11:45, Boris Perez Canedo escribió: >> >> Hola, >>> >>> quisiera poder comprobar que una determinada URL existe y es accesible, >>> pero sin 'descargar' su contenido, simplemente comprobar que el server está >>> activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero >>> sin tener que descargar su contenido. Podría hacer un simple wget the la URL >>> y ver si funciona, pero no me interesa. >>> >>> Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la >>> metainformación contenida en el HEAD. En principio eso seria suficiente. >>> Ejemplo: >>> >>> $ curl --head http://www.google.com >>> HTTP/1.0 200 OK >>> Date: Fri, 02 Apr 2010 15:00:37 GMT >>> Expires: -1 >>> Cache-Control: private, max-age=0 >>> Content-Type: text/html; charset=ISO-8859-1 >>> Set-Cookie: >>> PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; >>> expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com >>> Set-Cookie: >>> NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; >>> expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; >>> HttpOnly >>> Server: gws >>> X-XSS-Protection: 0 >>> X-Cache: MISS from httpproxy4.bnl.vip >>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >>> Proxy-Connection: close >>> >>> $ curl --head http://www.google.comm >>> HTTP/1.0 503 Service Unavailable >>> Server: squid/3.0.STABLE8 >>> Mime-Version: 1.0 >>> Date: Fri, 02 Apr 2010 15:08:02 GMT >>> Content-Type: text/html >>> Content-Length: 1823 >>> Expires: Fri, 02 Apr 2010 15:08:02 GMT >>> X-Squid-Error: ERR_DNS_FAIL 0 >>> X-Cache: MISS from httpproxy4.bnl.vip >>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >>> Proxy-Connection: close >>> >>> Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre >>> la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado >>> claro cómo puedo validar la URL a partir de este tipo de resultados. >>> >>> He estado mirando un poco las clases urllib y urllib2, pero no acabo de >>> ver cómo puedo hacer la validación sin que el contenido de la URL se >>> descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo >>> validar una URL sin necesidad de descargar su contenido, válido para >>> python2.3, estaré eternamente agradecido. >>> >>> >>> Muchas gracias. Saludos cordiales, >>> >>> Jose >>> >>> Hola Jose, >>> >>> la primera linea no siempre contiene OK, pero no puedes obtener el código >>> de respuesta e interpretarlo? >>> >>> En el primer caso el código es 200 >>> y en el segundo 503, utiliza las expresiones regulares. >>> >>> Ejemplo: >>> (HTTP/\d\.\d)\s(\d{3}) >>> en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. >>> >>> import re >>> reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") >>> >>> match = reobj.search(primera_linea) >>> >>> if match: >>> version = match.group(1) >>> codigo = match.group(2) >>> >>> >>> >>> Saludos, >>> Boris. >>> >>> >> Hola Boris, >> >> eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el >> mismo número, o al menos un conjunto conocido de números, eso me vale. >> >> >> El 4 de abril de 2010 11:36, necudeco escribió: NO Siempre. Por ejemplo con las url amigables, cuando envias una url inexistente el sistema te devuelve una pagina que visualmente es 404, pero el codigo http que te envia es 200 Saludos Hola, ¿Te refieres a cosas como tinyurl.com? Hmmm, algo a tener en cuenta, sin duda. Gracias por el comentario. Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Sun Apr 4 23:38:50 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Sun, 4 Apr 2010 23:38:50 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: El día 4 de abril de 2010 10:26, monoBOT escribió: > la línea 83 está en la función de grabado: >     def grabar(self, event): >         dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?', 'Atención', > wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP) >         respuesta=dialogo.ShowModal() >         if (respuesta ==wx.ID_YES): >             print 'obteniendo valores...' >             nombres_attr = ['numerocolegiado','nombre', 'primerapellido', > 'segundoapellido', 'dni', 'direccion', 'codigopostal', 'poblacion', 'email', > 'telefono1', 'telefono2'] >             datos_entrados = [self.ventana.entranumcol, > self.ventana.entranombre, self.ventana.entraapellido1, > self.ventana.entraapellido2, self.ventana.entradni, self.ventana.entradirec, > self.ventana.entrapost, self.ventana.entrapobl, self.ventana.entraemail, > self.ventana.entratf1, self.ventana.entratf2] >             print 'guardando...' >             for m in range(len(datos_entrados)): >                 cambia_attrib(arbol='usuario', dato=nombres_attr[m], > nuevovalor=reg_xml(datos_entrados[m].GetValue())) >             nom_empr = ['nombreempresa', 'cifempresa', > 'direccionempresa','codigopostalempresa', 'telefonoempresa'] >             dat_empr = [self.ventana.entranombreempresa, > self.ventana.entracifempresa, self.ventana.entradireccionempresa, > self.ventana.entracodigopostalempresa, self.ventana.entratelefonoempresa] >             for m in range(len(nom_empr)): >                 cambia_attrib(arbol='datosempresa', dato=nom_empr[m], > nuevovalor=reg_xml(dat_empr[m].GetValue())) >             cambia_attrib('usuario', 'colegio', > reg_xml(self.ventana.entracolegio.GetStringSelection())) >             cambia_attrib('usuario', 'provincia', > reg_xml(self.ventana.entraprov.GetStringSelection())) >             guarda_datos(datogral) >             print 'guardado' >             self.Destroy() >         else: >             print 'Cancelado' >             dialogo.Destroy() > la función de grabado lo que hace es llamar a unas > variables self.ventana.entranombreempresa     todas ellas se montan de esta > forma: > self.ventana.entranombre = wx.TextCtrl(self.ventana, -1, nombre_en_fichero) > y el valor por defecto de cada una proviene del fichero xml también: > nombre_en_fichero = xml_none(busqueda_xml ('usuario', 'nombre')) > así que lo que hago es: > lee xml ---> muestra en pantalla el dato guardado ---> el usuario cambia los > datos ---> grabo los datos. > las funciones de lectura y guardado de xml son: > def busqueda_xml (arbol, dato): >     valor = > arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0].childNodes[0].nodeValue >     return valor > def guarda_datos(archivo): >     fichero = open(os.path.realpath(archivo), "w") >     arbol_gral.writexml(fichero, encoding='iso-8859-1') >     fichero.close() >     return True El error lo genera writexml en esta función. Yo no utilizo minidom, pero supongo que esto te funcionará: import codecs # esto ponlo al principio del fichero def guarda_datos(archivo): fichero = codecs.open(os.path.realpath(archivo), "w", 'iso-8859-1') arbol_gral.writexml(fichero, encoding='iso-8859-1') fichero.close() return True Si quieres utilizar tu código en un sistema en producción, habría que revisar algunas cosas. Yo te recomiendo utilizar otros módulos en lugar de minidom. Echa un vistazo a Amara (http://wiki.xml3k.org/Amara2), te permite manejar xml como si fueran objetos python. --lm > la funcion xml_none lo que hace es cambiar una entrada igual a cero por un > campo limpio > def xml_none(m): >     if m =='0': >         n = '' >         return n >     return m > la función contraria la pongo al grabar y lo que hace es convertir un campo > vacío en un 0, y también los caracteres prohibidos por xml por sus sutitutos > ... así evito el error al grabar. > > def reg_xml(m): >     if m == '': >         n = '0' >         return n >     n = m.replace('&', '&') >     n = n.replace('<','<') >     n = n.replace('>','>') >     return n > > -- > monobotblog.alvarezalonso.es > _______________________________________________ > 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 monobot.soft en gmail.com Mon Apr 5 00:04:59 2010 From: monobot.soft en gmail.com (monoBOT) Date: Sun, 4 Apr 2010 23:04:59 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: Muchas gracias lo probare. El 4 de abril de 2010 22:38, Luis Miguel Morillas escribió: > El día 4 de abril de 2010 10:26, monoBOT > escribió: > > la línea 83 está en la función de grabado: > > def grabar(self, event): > > dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?', > 'Atención', > > wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP) > > respuesta=dialogo.ShowModal() > > if (respuesta ==wx.ID_YES): > > print 'obteniendo valores...' > > nombres_attr = ['numerocolegiado','nombre', 'primerapellido', > > 'segundoapellido', 'dni', 'direccion', 'codigopostal', 'poblacion', > 'email', > > 'telefono1', 'telefono2'] > > datos_entrados = [self.ventana.entranumcol, > > self.ventana.entranombre, self.ventana.entraapellido1, > > self.ventana.entraapellido2, self.ventana.entradni, > self.ventana.entradirec, > > self.ventana.entrapost, self.ventana.entrapobl, self.ventana.entraemail, > > self.ventana.entratf1, self.ventana.entratf2] > > print 'guardando...' > > for m in range(len(datos_entrados)): > > cambia_attrib(arbol='usuario', dato=nombres_attr[m], > > nuevovalor=reg_xml(datos_entrados[m].GetValue())) > > nom_empr = ['nombreempresa', 'cifempresa', > > 'direccionempresa','codigopostalempresa', 'telefonoempresa'] > > dat_empr = [self.ventana.entranombreempresa, > > self.ventana.entracifempresa, self.ventana.entradireccionempresa, > > self.ventana.entracodigopostalempresa, self.ventana.entratelefonoempresa] > > for m in range(len(nom_empr)): > > cambia_attrib(arbol='datosempresa', dato=nom_empr[m], > > nuevovalor=reg_xml(dat_empr[m].GetValue())) > > cambia_attrib('usuario', 'colegio', > > reg_xml(self.ventana.entracolegio.GetStringSelection())) > > cambia_attrib('usuario', 'provincia', > > reg_xml(self.ventana.entraprov.GetStringSelection())) > > guarda_datos(datogral) > > print 'guardado' > > self.Destroy() > > else: > > print 'Cancelado' > > dialogo.Destroy() > > la función de grabado lo que hace es llamar a unas > > variables self.ventana.entranombreempresa todas ellas se montan de > esta > > forma: > > self.ventana.entranombre = wx.TextCtrl(self.ventana, -1, > nombre_en_fichero) > > y el valor por defecto de cada una proviene del fichero xml también: > > nombre_en_fichero = xml_none(busqueda_xml ('usuario', 'nombre')) > > así que lo que hago es: > > lee xml ---> muestra en pantalla el dato guardado ---> el usuario cambia > los > > datos ---> grabo los datos. > > las funciones de lectura y guardado de xml son: > > def busqueda_xml (arbol, dato): > > valor = > > > arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0].childNodes[0].nodeValue > > return valor > > def guarda_datos(archivo): > > fichero = open(os.path.realpath(archivo), "w") > > arbol_gral.writexml(fichero, encoding='iso-8859-1') > > fichero.close() > > return True > > El error lo genera writexml en esta función. Yo no utilizo minidom, > pero supongo que esto te funcionará: > > import codecs # esto ponlo al principio del fichero > > def guarda_datos(archivo): > fichero = codecs.open(os.path.realpath(archivo), "w", 'iso-8859-1') > arbol_gral.writexml(fichero, encoding='iso-8859-1') > fichero.close() > return True > > Si quieres utilizar tu código en un sistema en producción, habría que > revisar algunas cosas. Yo te recomiendo utilizar otros módulos en > lugar de minidom. Echa un vistazo a Amara > (http://wiki.xml3k.org/Amara2), te permite manejar xml como si fueran > objetos python. > > --lm > > > la funcion xml_none lo que hace es cambiar una entrada igual a cero por > un > > campo limpio > > def xml_none(m): > > if m =='0': > > n = '' > > return n > > return m > > la función contraria la pongo al grabar y lo que hace es convertir un > campo > > vacío en un 0, y también los caracteres prohibidos por xml por sus > sutitutos > > ... así evito el error al grabar. > > > > def reg_xml(m): > > if m == '': > > n = '0' > > return n > > n = m.replace('&', '&') > > n = n.replace('<','<') > > n = n.replace('>','>') > > return n > > > > -- > > monobotblog.alvarezalonso.es > > _______________________________________________ > > 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/ > -- Héctor Alvarez Arquitecto Advertencia legal: De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de carácter Personal le informamos que: Este correo electrónico contiene información privada y estrictamente confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, directa o indirectamente, usar, revelar, distribuir, imprimir o copiar ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail y proceda a borrar de su sistema inmediatamente el mensaje así como todas sus copias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From monobot.soft en gmail.com Mon Apr 5 00:15:31 2010 From: monobot.soft en gmail.com (monoBOT) Date: Sun, 4 Apr 2010 23:15:31 +0100 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: ´Funciona como un guante!!! ... muchas gracias luis miguel El 4 de abril de 2010 23:04, monoBOT escribió: > Muchas gracias lo probare. > > El 4 de abril de 2010 22:38, Luis Miguel Morillas escribió: > > El día 4 de abril de 2010 10:26, monoBOT >> escribió: >> > la línea 83 está en la función de grabado: >> > def grabar(self, event): >> > dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?', >> 'Atención', >> > wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP) >> > respuesta=dialogo.ShowModal() >> > if (respuesta ==wx.ID_YES): >> > print 'obteniendo valores...' >> > nombres_attr = ['numerocolegiado','nombre', >> 'primerapellido', >> > 'segundoapellido', 'dni', 'direccion', 'codigopostal', 'poblacion', >> 'email', >> > 'telefono1', 'telefono2'] >> > datos_entrados = [self.ventana.entranumcol, >> > self.ventana.entranombre, self.ventana.entraapellido1, >> > self.ventana.entraapellido2, self.ventana.entradni, >> self.ventana.entradirec, >> > self.ventana.entrapost, self.ventana.entrapobl, self.ventana.entraemail, >> > self.ventana.entratf1, self.ventana.entratf2] >> > print 'guardando...' >> > for m in range(len(datos_entrados)): >> > cambia_attrib(arbol='usuario', dato=nombres_attr[m], >> > nuevovalor=reg_xml(datos_entrados[m].GetValue())) >> > nom_empr = ['nombreempresa', 'cifempresa', >> > 'direccionempresa','codigopostalempresa', 'telefonoempresa'] >> > dat_empr = [self.ventana.entranombreempresa, >> > self.ventana.entracifempresa, self.ventana.entradireccionempresa, >> > self.ventana.entracodigopostalempresa, >> self.ventana.entratelefonoempresa] >> > for m in range(len(nom_empr)): >> > cambia_attrib(arbol='datosempresa', dato=nom_empr[m], >> > nuevovalor=reg_xml(dat_empr[m].GetValue())) >> > cambia_attrib('usuario', 'colegio', >> > reg_xml(self.ventana.entracolegio.GetStringSelection())) >> > cambia_attrib('usuario', 'provincia', >> > reg_xml(self.ventana.entraprov.GetStringSelection())) >> > guarda_datos(datogral) >> > print 'guardado' >> > self.Destroy() >> > else: >> > print 'Cancelado' >> > dialogo.Destroy() >> > la función de grabado lo que hace es llamar a unas >> > variables self.ventana.entranombreempresa todas ellas se montan de >> esta >> > forma: >> > self.ventana.entranombre = wx.TextCtrl(self.ventana, -1, >> nombre_en_fichero) >> > y el valor por defecto de cada una proviene del fichero xml también: >> > nombre_en_fichero = xml_none(busqueda_xml ('usuario', 'nombre')) >> > así que lo que hago es: >> > lee xml ---> muestra en pantalla el dato guardado ---> el usuario cambia >> los >> > datos ---> grabo los datos. >> > las funciones de lectura y guardado de xml son: >> > def busqueda_xml (arbol, dato): >> > valor = >> > >> arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0].childNodes[0].nodeValue >> > return valor >> > def guarda_datos(archivo): >> > fichero = open(os.path.realpath(archivo), "w") >> > arbol_gral.writexml(fichero, encoding='iso-8859-1') >> > fichero.close() >> > return True >> >> El error lo genera writexml en esta función. Yo no utilizo minidom, >> pero supongo que esto te funcionará: >> >> import codecs # esto ponlo al principio del fichero >> >> def guarda_datos(archivo): >> fichero = codecs.open(os.path.realpath(archivo), "w", 'iso-8859-1') >> arbol_gral.writexml(fichero, encoding='iso-8859-1') >> fichero.close() >> return True >> >> Si quieres utilizar tu código en un sistema en producción, habría que >> revisar algunas cosas. Yo te recomiendo utilizar otros módulos en >> lugar de minidom. Echa un vistazo a Amara >> (http://wiki.xml3k.org/Amara2), te permite manejar xml como si fueran >> objetos python. >> >> --lm >> >> > la funcion xml_none lo que hace es cambiar una entrada igual a cero por >> un >> > campo limpio >> > def xml_none(m): >> > if m =='0': >> > n = '' >> > return n >> > return m >> > la función contraria la pongo al grabar y lo que hace es convertir un >> campo >> > vacío en un 0, y también los caracteres prohibidos por xml por sus >> sutitutos >> > ... así evito el error al grabar. >> > >> > def reg_xml(m): >> > if m == '': >> > n = '0' >> > return n >> > n = m.replace('&', '&') >> > n = n.replace('<','<') >> > n = n.replace('>','>') >> > return n >> > >> > -- >> > monobotblog.alvarezalonso.es >> > _______________________________________________ >> > 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/ >> > > > > -- > Héctor Alvarez > Arquitecto > > Advertencia legal: > De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de > carácter Personal le informamos que: > Este correo electrónico contiene información privada y estrictamente > confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, > directa o indirectamente, usar, revelar, distribuir, imprimir o copiar > ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido > este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail > y proceda a borrar de su sistema inmediatamente el mensaje así como todas > sus copias. > -- Héctor Alvarez Arquitecto Advertencia legal: De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de carácter Personal le informamos que: Este correo electrónico contiene información privada y estrictamente confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, directa o indirectamente, usar, revelar, distribuir, imprimir o copiar ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail y proceda a borrar de su sistema inmediatamente el mensaje así como todas sus copias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From necudeco en gmail.com Mon Apr 5 02:36:44 2010 From: necudeco en gmail.com (necudeco) Date: Sun, 4 Apr 2010 20:36:44 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: no, me referia a url del tipo http://sitioweb.com/index.php/04/08/nuevo-post Saludos 2010/4/4 Jose Caballero > > >> 2010/4/2 Jose Caballero >> >>> >>> >>> El 2 de abril de 2010 11:45, Boris Perez Canedo escribió: >>> >>> Hola, >>>> >>>> quisiera poder comprobar que una determinada URL existe y es accesible, >>>> pero sin 'descargar' su contenido, simplemente comprobar que el server está >>>> activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero >>>> sin tener que descargar su contenido. Podría hacer un simple wget the la URL >>>> y ver si funciona, pero no me interesa. >>>> >>>> Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la >>>> metainformación contenida en el HEAD. En principio eso seria suficiente. >>>> Ejemplo: >>>> >>>> $ curl --head http://www.google.com >>>> HTTP/1.0 200 OK >>>> Date: Fri, 02 Apr 2010 15:00:37 GMT >>>> Expires: -1 >>>> Cache-Control: private, max-age=0 >>>> Content-Type: text/html; charset=ISO-8859-1 >>>> Set-Cookie: >>>> PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; >>>> expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com >>>> Set-Cookie: >>>> NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; >>>> expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; >>>> HttpOnly >>>> Server: gws >>>> X-XSS-Protection: 0 >>>> X-Cache: MISS from httpproxy4.bnl.vip >>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >>>> Proxy-Connection: close >>>> >>>> $ curl --head http://www.google.comm >>>> HTTP/1.0 503 Service Unavailable >>>> Server: squid/3.0.STABLE8 >>>> Mime-Version: 1.0 >>>> Date: Fri, 02 Apr 2010 15:08:02 GMT >>>> Content-Type: text/html >>>> Content-Length: 1823 >>>> Expires: Fri, 02 Apr 2010 15:08:02 GMT >>>> X-Squid-Error: ERR_DNS_FAIL 0 >>>> X-Cache: MISS from httpproxy4.bnl.vip >>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >>>> Proxy-Connection: close >>>> >>>> Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre >>>> la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado >>>> claro cómo puedo validar la URL a partir de este tipo de resultados. >>>> >>>> He estado mirando un poco las clases urllib y urllib2, pero no acabo de >>>> ver cómo puedo hacer la validación sin que el contenido de la URL se >>>> descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo >>>> validar una URL sin necesidad de descargar su contenido, válido para >>>> python2.3, estaré eternamente agradecido. >>>> >>>> >>>> Muchas gracias. Saludos cordiales, >>>> >>>> Jose >>>> >>>> Hola Jose, >>>> >>>> la primera linea no siempre contiene OK, pero no puedes obtener el >>>> código de respuesta e interpretarlo? >>>> >>>> En el primer caso el código es 200 >>>> y en el segundo 503, utiliza las expresiones regulares. >>>> >>>> Ejemplo: >>>> (HTTP/\d\.\d)\s(\d{3}) >>>> en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código. >>>> >>>> import re >>>> reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") >>>> >>>> match = reobj.search(primera_linea) >>>> >>>> if match: >>>> version = match.group(1) >>>> codigo = match.group(2) >>>> >>>> >>>> >>>> Saludos, >>>> Boris. >>>> >>>> >>> Hola Boris, >>> >>> eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el >>> mismo número, o al menos un conjunto conocido de números, eso me vale. >>> >>> >>> > > > El 4 de abril de 2010 11:36, necudeco escribió: > > NO Siempre. > > Por ejemplo con las url amigables, cuando envias una url inexistente el > sistema te devuelve una pagina que visualmente es 404, pero el codigo http > que te envia es 200 > > Saludos > > > > Hola, > ¿Te refieres a cosas como tinyurl.com? Hmmm, algo a tener en cuenta, sin > duda. Gracias por el comentario. > > > Jose > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Mario R. Uriarte Amaya 044 949369377 NeCuDeCo Asociacion Peruana de Software Libre http://necudeco.com http://apesol.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Mon Apr 5 03:40:37 2010 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Sun, 4 Apr 2010 21:40:37 -0400 Subject: [Python-es] validar accesibilidad a una URL sin hacer "download" In-Reply-To: References: <1353.10.14.19.12.1270223143.squirrel@correo.ucf.edu.cu> Message-ID: > >>>> Hola, >>>>> >>>>> quisiera poder comprobar que una determinada URL existe y es accesible, >>>>> pero sin 'descargar' su contenido, simplemente comprobar que el server está >>>>> activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero >>>>> sin tener que descargar su contenido. Podría hacer un simple wget the la URL >>>>> y ver si funciona, pero no me interesa. >>>>> >>>>> Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve >>>>> la metainformación contenida en el HEAD. En principio eso seria suficiente. >>>>> Ejemplo: >>>>> >>>>> $ curl --head http://www.google.com >>>>> HTTP/1.0 200 OK >>>>> Date: Fri, 02 Apr 2010 15:00:37 GMT >>>>> Expires: -1 >>>>> Cache-Control: private, max-age=0 >>>>> Content-Type: text/html; charset=ISO-8859-1 >>>>> Set-Cookie: >>>>> PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; >>>>> expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com >>>>> Set-Cookie: >>>>> NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0; >>>>> expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com; >>>>> HttpOnly >>>>> Server: gws >>>>> X-XSS-Protection: 0 >>>>> X-Cache: MISS from httpproxy4.bnl.vip >>>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >>>>> Proxy-Connection: close >>>>> >>>>> $ curl --head http://www.google.comm >>>>> HTTP/1.0 503 Service Unavailable >>>>> Server: squid/3.0.STABLE8 >>>>> Mime-Version: 1.0 >>>>> Date: Fri, 02 Apr 2010 15:08:02 GMT >>>>> Content-Type: text/html >>>>> Content-Length: 1823 >>>>> Expires: Fri, 02 Apr 2010 15:08:02 GMT >>>>> X-Squid-Error: ERR_DNS_FAIL 0 >>>>> X-Cache: MISS from httpproxy4.bnl.vip >>>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 >>>>> Proxy-Connection: close >>>>> >>>>> Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre >>>>> la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado >>>>> claro cómo puedo validar la URL a partir de este tipo de resultados. >>>>> >>>>> He estado mirando un poco las clases urllib y urllib2, pero no acabo de >>>>> ver cómo puedo hacer la validación sin que el contenido de la URL se >>>>> descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo >>>>> validar una URL sin necesidad de descargar su contenido, válido para >>>>> python2.3, estaré eternamente agradecido. >>>>> >>>>> >>>>> Muchas gracias. Saludos cordiales, >>>>> >>>>> Jose >>>>> >>>>> Hola Jose, >>>>> >>>>> la primera linea no siempre contiene OK, pero no puedes obtener el >>>>> código de respuesta e interpretarlo? >>>>> >>>>> En el primer caso el código es 200 >>>>> y en el segundo 503, utiliza las expresiones regulares. >>>>> >>>>> Ejemplo: >>>>> (HTTP/\d\.\d)\s(\d{3}) >>>>> en el grupo 1 tienes la versión del protocolo y en el grupo 2 el >>>>> código. >>>>> >>>>> import re >>>>> reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})") >>>>> >>>>> match = reobj.search(primera_linea) >>>>> >>>>> if match: >>>>> version = match.group(1) >>>>> codigo = match.group(2) >>>>> >>>>> >>>>> >>>>> Saludos, >>>>> Boris. >>>>> >>>>> >>>> Hola Boris, >>>> >>>> eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el >>>> mismo número, o al menos un conjunto conocido de números, eso me vale. >>>> >>>> >>>> >> >> >> El 4 de abril de 2010 11:36, necudeco escribió: >> >> NO Siempre. >> >> Por ejemplo con las url amigables, cuando envias una url inexistente el >> sistema te devuelve una pagina que visualmente es 404, pero el codigo http >> que te envia es 200 >> >> Saludos >> >> >> >> Hola, >> ¿Te refieres a cosas como tinyurl.com? Hmmm, algo a tener en cuenta, sin >> duda. Gracias por el comentario. >> >> >> no, me referia a url del tipo http://sitioweb.com/index.php/04/08/nuevo-post Saludos No te sigo. Devuelve 404: $ curl --head http://sitioweb.com/index.php/04/08/nuevo-post HTTP/1.0 404 Not Found Date: Mon, 05 Apr 2010 01:38:03 GMT Server: Apache Content-Type: text/html; charset=iso-8859-1 X-Cache: MISS from httpproxy4.bnl.vip X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128 Proxy-Connection: close ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Mon Apr 5 08:14:23 2010 From: morillas en gmail.com (Luis Miguel Morillas) Date: Mon, 5 Apr 2010 08:14:23 +0200 Subject: [Python-es] problema con las tildes In-Reply-To: References: Message-ID: El día 5 de abril de 2010 00:15, monoBOT escribió: > ´Funciona como un guante!!! ... muchas gracias luis miguel > OK. Ahora tu programa es portable a otros equipos. Si solucionas el problema modificando el sitecustomize.py, sólo funcionará en ese equipo. Saludos, -- Luis Miguel > El 4 de abril de 2010 23:04, monoBOT escribió: >> >> Muchas gracias lo probare. >> >> El 4 de abril de 2010 22:38, Luis Miguel Morillas >> escribió: >>> >>> El día 4 de abril de 2010 10:26, monoBOT >>> escribió: >>> > la línea 83 está en la función de grabado: >>> >     def grabar(self, event): >>> >         dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?', >>> > 'Atención', >>> > wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP) >>> >         respuesta=dialogo.ShowModal() >>> >         if (respuesta ==wx.ID_YES): >>> >             print 'obteniendo valores...' >>> >             nombres_attr = ['numerocolegiado','nombre', >>> > 'primerapellido', >>> > 'segundoapellido', 'dni', 'direccion', 'codigopostal', 'poblacion', >>> > 'email', >>> > 'telefono1', 'telefono2'] >>> >             datos_entrados = [self.ventana.entranumcol, >>> > self.ventana.entranombre, self.ventana.entraapellido1, >>> > self.ventana.entraapellido2, self.ventana.entradni, >>> > self.ventana.entradirec, >>> > self.ventana.entrapost, self.ventana.entrapobl, >>> > self.ventana.entraemail, >>> > self.ventana.entratf1, self.ventana.entratf2] >>> >             print 'guardando...' >>> >             for m in range(len(datos_entrados)): >>> >                 cambia_attrib(arbol='usuario', dato=nombres_attr[m], >>> > nuevovalor=reg_xml(datos_entrados[m].GetValue())) >>> >             nom_empr = ['nombreempresa', 'cifempresa', >>> > 'direccionempresa','codigopostalempresa', 'telefonoempresa'] >>> >             dat_empr = [self.ventana.entranombreempresa, >>> > self.ventana.entracifempresa, self.ventana.entradireccionempresa, >>> > self.ventana.entracodigopostalempresa, >>> > self.ventana.entratelefonoempresa] >>> >             for m in range(len(nom_empr)): >>> >                 cambia_attrib(arbol='datosempresa', dato=nom_empr[m], >>> > nuevovalor=reg_xml(dat_empr[m].GetValue())) >>> >             cambia_attrib('usuario', 'colegio', >>> > reg_xml(self.ventana.entracolegio.GetStringSelection())) >>> >             cambia_attrib('usuario', 'provincia', >>> > reg_xml(self.ventana.entraprov.GetStringSelection())) >>> >             guarda_datos(datogral) >>> >             print 'guardado' >>> >             self.Destroy() >>> >         else: >>> >             print 'Cancelado' >>> >             dialogo.Destroy() >>> > la función de grabado lo que hace es llamar a unas >>> > variables self.ventana.entranombreempresa     todas ellas se montan de >>> > esta >>> > forma: >>> > self.ventana.entranombre = wx.TextCtrl(self.ventana, -1, >>> > nombre_en_fichero) >>> > y el valor por defecto de cada una proviene del fichero xml también: >>> > nombre_en_fichero = xml_none(busqueda_xml ('usuario', 'nombre')) >>> > así que lo que hago es: >>> > lee xml ---> muestra en pantalla el dato guardado ---> el usuario >>> > cambia los >>> > datos ---> grabo los datos. >>> > las funciones de lectura y guardado de xml son: >>> > def busqueda_xml (arbol, dato): >>> >     valor = >>> > >>> > arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0].childNodes[0].nodeValue >>> >     return valor >>> > def guarda_datos(archivo): >>> >     fichero = open(os.path.realpath(archivo), "w") >>> >     arbol_gral.writexml(fichero, encoding='iso-8859-1') >>> >     fichero.close() >>> >     return True >>> >>> El error lo genera writexml en esta función. Yo no utilizo minidom, >>> pero supongo que esto te funcionará: >>> >>> import codecs # esto ponlo al principio del fichero >>> >>> def guarda_datos(archivo): >>>      fichero = codecs.open(os.path.realpath(archivo),  "w", 'iso-8859-1') >>>      arbol_gral.writexml(fichero, encoding='iso-8859-1') >>>      fichero.close() >>>      return True >>> >>> Si quieres utilizar tu código en un sistema en producción, habría que >>> revisar algunas cosas. Yo te recomiendo utilizar otros módulos en >>> lugar de minidom. Echa un vistazo a Amara >>> (http://wiki.xml3k.org/Amara2), te permite manejar xml como si fueran >>> objetos python. >>> >>> --lm >>> >>> > la funcion xml_none lo que hace es cambiar una entrada igual a cero por >>> > un >>> > campo limpio >>> > def xml_none(m): >>> >     if m =='0': >>> >         n = '' >>> >         return n >>> >     return m >>> > la función contraria la pongo al grabar y lo que hace es convertir un >>> > campo >>> > vacío en un 0, y también los caracteres prohibidos por xml por sus >>> > sutitutos >>> > ... así evito el error al grabar. >>> > >>> > def reg_xml(m): >>> >     if m == '': >>> >         n = '0' >>> >         return n >>> >     n = m.replace('&', '&') >>> >     n = n.replace('<','<') >>> >     n = n.replace('>','>') >>> >     return n >>> > >>> > -- >>> > monobotblog.alvarezalonso.es >>> > _______________________________________________ >>> > 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/ >> >> >> >> -- >> Héctor Alvarez >> Arquitecto >> >> Advertencia legal: >> De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de >> carácter Personal le informamos que: >> Este correo electrónico contiene información privada y estrictamente >> confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, >> directa o indirectamente, usar, revelar, distribuir, imprimir o copiar >> ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido >> este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail >> y proceda a borrar de su sistema inmediatamente el mensaje así como todas >> sus copias. > > > > -- > Héctor Alvarez > Arquitecto > > Advertencia legal: > De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de > carácter Personal le informamos que: > Este correo electrónico contiene información privada y estrictamente > confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo, > directa o indirectamente, usar, revelar, distribuir, imprimir o copiar > ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido > este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail > y proceda a borrar de su sistema inmediatamente el mensaje así como todas > sus copias. > > _______________________________________________ > 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 inf200523 en ucf.edu.cu Mon Apr 5 14:24:48 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Mon, 5 Apr 2010 08:24:48 -0400 (EDT) Subject: [Python-es] Obtener nombre de campos tabla mysql In-Reply-To: References: <1491.10.14.19.12.1270236904.squirrel@correo.ucf.edu.cu> Message-ID: <1088.10.14.19.12.1270470288.squirrel@correo.ucf.edu.cu> > Te referís a esto? :mysql> describe "nombre de la tabla"; > Un saludo y avisa si te funcionó. > -- > Machi Conca.  Hola, si me funcionó, muchas gracias. Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dbpp en ono.com Mon Apr 5 20:00:01 2010 From: dbpp en ono.com (DBpp) Date: Mon, 5 Apr 2010 20:00:01 +0200 Subject: [Python-es] Rotar tablas en ReportLab? Message-ID: <201004052000.02378.dbpp@ono.com> On Viernes 02 Abril 2010 14:33:23 Boris Perez Canedo escribió: > Hola, > > Es posible rotar una tabla con su contenido en reportlab? Sucede que > realizo un reporte cuyas tablas son muy grandes y ni siquiera disminuyendo > el tipo de letra, el padding y otras cosas logro ajustarlas a la hoja. > > Se que > podr?a intentar rotarla por c?digo sin utilizar reportlab pero eso no me > rotar?a como tal el contenido de la tabla, es decir, el contenido seguir?a > horizontal. > > > Gracias de antemano, > > Boris. ¿No sería preferible cambiar la orientación a landscape en vez de portrait para esas páginas en concreto? From rapto en arrakis.es Tue Apr 6 11:06:56 2010 From: rapto en arrakis.es (=?UTF-8?B?TWFyY29zIFPDoW5jaGV6IFByb3ZlbmNpbw==?=) Date: Tue, 06 Apr 2010 11:06:56 +0200 Subject: [Python-es] Rotar tablas en ReportLab? In-Reply-To: <1149.10.14.19.12.1270211603.squirrel@correo.ucf.edu.cu> References: <1149.10.14.19.12.1270211603.squirrel@correo.ucf.edu.cu> Message-ID: <4BBAF9B0.4020704@arrakis.es> Hola Sospecho que tendrás que cambiar la orientación de la página. A ver si te vale esto: http://two.pairlist.net/pipermail/reportlab-users/2005-January/003647.html te pego la parte relevante: def _landscape(canv, doc): canv.rotate(90) canv.translate(0,-A4[0]) def buildDocTemplate(fname, indexer): dt = BaseDocTemplate(fname) sb = 0 address = Frame(dt.leftMargin + cm*8, A4[1] - 9.5*cm, 7*cm, 4*cm, id='address',showBoundary=sb) additional = Frame(0, A4[1] - 5.6*cm, 7*cm, 1*cm, id='additional',showBoundary=sb) summary = Frame(1*cm, 1*cm, A4[1] - 2*cm, A4[0] - 2*cm,id='summary',showBoundary=sb) bollettini1 = Frame(-0.55*cm, (A4[0] / 2)+0.15*cm, A4[1], A4[0]/2 - 1*cm,id='bollettini1',showBoundary=sb) bollettini2 = Frame(-0.55*cm, 0.2*cm, A4[1],A4[0]/2 - 1.4*cm,id='bollettini2',showBoundary=sb) dt.addPageTemplates([PageTemplate(id='address',frames=[additional,address],onPageEnd=indexer.addressPage), PageTemplate(id='summary',frames=summary,onPage=_landscape,onPageEnd=indexer.summaryPage), PageTemplate(id='bollettini',frames=[bollettini1,bollettini2],onPage=_landscape,onPageEnd=indexer.ccpPage), ]) return dt El 02/04/10 14:33, Boris Perez Canedo escribió: > Hola, > > Es posible rotar una tabla con su contenido en reportlab? Sucede que > realizo un reporte cuyas tablas son muy grandes y ni siquiera > disminuyendo el tipo de letra, el padding y otras cosas logro > ajustarlas a la hoja. > > Se que podría intentar rotarla por código sin utilizar reportlab pero > eso no me rotaría como tal el contenido de la tabla, es decir, el > contenido seguiría horizontal. > > > Gracias de antemano, > > Boris. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Tue Apr 6 15:25:09 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Tue, 6 Apr 2010 09:25:09 -0400 (EDT) Subject: [Python-es] Rotar tablas en ReportLab? In-Reply-To: <201004052000.02378.dbpp@ono.com> References: <201004052000.02378.dbpp@ono.com> Message-ID: <1081.10.14.19.12.1270560309.squirrel@correo.ucf.edu.cu> > On Viernes 02 Abril 2010 14:33:23 Boris Perez Canedo escribió: >> Hola, >> >> Es posible rotar una tabla con su contenido en reportlab? Sucede que >> realizo un reporte cuyas tablas son muy grandes y ni siquiera disminuyendo >> el tipo de letra, el padding y otras cosas logro ajustarlas a la hoja. >> >> Se que >> podr�a intentar rotarla por c�digo sin utilizar reportlab pero eso no me >> rotar�a como tal el contenido de la tabla, es decir, el contenido seguir�a >> horizontal. >> >> >> Gracias de antemano, >> >> Boris. > > ¿No sería preferible cambiar la orientación a landscape en vez de portrait > para esas páginas en concreto?   Hola y gracias por la respuesta, Soy bastante nuevo con reportlab. Cómo hago para hacer lo que dices arriba? y cómo puedo determinar si una consulta me va producir una tabla que se saldrá de los límites para entonces cambiar la orientación para esas páginas? Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inf200523 en ucf.edu.cu Tue Apr 6 15:28:04 2010 From: inf200523 en ucf.edu.cu (Boris Perez Canedo) Date: Tue, 6 Apr 2010 09:28:04 -0400 (EDT) Subject: [Python-es] Rotar tablas en ReportLab? In-Reply-To: <4BBAF9B0.4020704@arrakis.es> References: <1149.10.14.19.12.1270211603.squirrel@correo.ucf.edu.cu> <4BBAF9B0.4020704@arrakis.es> Message-ID: <1089.10.14.19.12.1270560484.squirrel@correo.ucf.edu.cu> Hola Sospecho que tendrás que cambiar la orientación de la página. A ver si te vale esto: http://two.pairlist.net/pipermail/reportlab-users/2005-January/003647.html te pego la parte relevante: def _landscape(canv, doc): canv.rotate(90) canv.translate(0,-A4[0]) def buildDocTemplate(fname, indexer): dt = BaseDocTemplate(fname) sb = 0 address = Frame(dt.leftMargin + cm*8, A4[1] - 9.5*cm, 7*cm, 4*cm, id='address',showBoundary=sb) additional = Frame(0, A4[1] - 5.6*cm, 7*cm, 1*cm, id='additional',showBoundary=sb) summary = Frame(1*cm, 1*cm, A4[1] - 2*cm, A4[0] - 2*cm,id='summary',showBoundary=sb) bollettini1 = Frame(-0.55*cm, (A4[0] / 2)+0.15*cm, A4[1], A4[0]/2 - 1*cm,id='bollettini1',showBoundary=sb) bollettini2 = Frame(-0.55*cm, 0.2*cm, A4[1],A4[0]/2 - 1.4*cm,id='bollettini2',showBoundary=sb) dt.addPageTemplates([PageTemplate(id='address',frames=[additional,address],onPageEnd=indexer.addressPage), PageTemplate(id='summary',frames=summary,onPage=_landscape,onPageEnd=indexer.summaryPage), PageTemplate(id='bollettini',frames=[bollettini1,bollettini2],onPage=_landscape,onPageEnd=indexer.ccpPage), ]) return dt El 02/04/10 14:33, Boris Perez Canedo escribió: Hola, Es posible rotar una tabla con su contenido en reportlab? Sucede que realizo un reporte cuyas tablas son muy grandes y ni siquiera disminuyendo el tipo de letra, el padding y otras cosas logro ajustarlas a la hoja. Se que podría intentar rotarla por código sin utilizar reportlab pero eso no me rotaría como tal el contenido de la tabla, es decir, el contenido seguiría horizontal. Gracias de antemano, Boris. Muchas gracias, Voy a echarle un vistazo pero la verdad es que no entiendo nada. Estoy recién salido del cascarón con reportlab. Saludos, Boris. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jlaradas en grm.uci.cu Tue Apr 6 11:51:20 2010 From: jlaradas en grm.uci.cu (Jesuz Lopez Arada) Date: Tue, 06 Apr 2010 05:51:20 -0400 Subject: [Python-es] problema con OpenGL Message-ID: <20100406055120.16037e8fdix053c4@correo.grm.uci.cu> Hola lista el problema es el siguiente tengo una PC con Ubuntu 9.10 instalado estoy tratando de corre un programa hecho python utilizando las librerias Opengl y me da el siguiente error 'Segmentation fault' , las librerias estan bien instaladas desde c trabajan bien , en otra maquina con ubuntu 8.4 no me pasa esto. Gracias. -- La ignorancia es temporal, la estupidez es para siempre. ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. From dbpp en ono.com Tue Apr 6 16:22:14 2010 From: dbpp en ono.com (DBpp) Date: Tue, 6 Apr 2010 16:22:14 +0200 Subject: [Python-es] Rotar tablas en ReportLab? In-Reply-To: <1081.10.14.19.12.1270560309.squirrel@correo.ucf.edu.cu> References: <201004052000.02378.dbpp@ono.com> <1081.10.14.19.12.1270560309.squirrel@correo.ucf.edu.cu> Message-ID: <201004061622.15874.dbpp@ono.com> On Martes 06 Abril 2010 15:25:09 Boris Perez Canedo escribió: > > On Viernes 02 Abril 2010 14:33:23 Boris Perez Canedo escribi?: > >> Hola, > >> > >> Es posible rotar una tabla con su > > contenido en reportlab? Sucede que > > ?No > > ser?a preferible cambiar la orientaci?n a landscape en vez de portrait > > > para esas p?ginas en concreto?? > > ?Hola y gracias por > la respuesta, > > Soy bastante nuevo con reportlab. C?mo hago para hacer > lo que dices arriba? y c?mo puedo determinar si una consulta me va producir > una tabla que se saldr? de los l?mites para entonces cambiar la > orientaci?n para esas p?ginas? > > > Saludos, > Boris. > > > --- > La mejor vacuna contra el virus A(H1N1) es la higiene personal > cuando generes el documento utiliza pagesize=landscape(A4) A4 si es el tamaño de página que usas. Te pego el siguiente código de ejemplo de las listas de reportlab: def go(): doc = SimpleDocTemplate("phello.pdf") Story = [Spacer(1,2*inch)] style = styles["Normal"] for i in range(100): bogustext = ("This is Paragraph number %s. " % i) *20 p = Paragraph(bogustext, style) Story.append(p) Story.append(Spacer(1,0.2*inch)) from reportlab.lib.pagesizes import A4, LETTER, landscape, portrait doc.pagesize = landscape(A4) doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages) From jlbetancourt en estudiantes.uci.cu Tue Apr 6 17:25:38 2010 From: jlbetancourt en estudiantes.uci.cu (Jorge Luis Betancourt Gonzalez) Date: Tue, 6 Apr 2010 11:25:38 -0400 (CDT) Subject: [Python-es] =?utf-8?q?Ejecutar_acci=C3=B3n_al_salir_de_un_FTP?= Message-ID: <2026382264.743141270567538729.JavaMail.root@ucimail4.uci.cu> Hola lista: Tengo la siguiente situación, un usuario se conecta a un servidor FTP y sube ciertos ficheros, en ese servidor hay un script de python que se supone que tome esos datos que se subieron y les haga algún procesamiento. Necesito que en cuanto el usuario termine la sesión en el servidor FTP se comience a procesar la información, pero cómo puedo saber desde python el momento preciso en que el usuario se desconectó del FTP? slds -- "It is only in the mysterious equation of love that any logical reasons can be found." "Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)" From azerizorrofox en gmail.com Tue Apr 6 17:48:57 2010 From: azerizorrofox en gmail.com (Aitor) Date: Tue, 6 Apr 2010 17:48:57 +0200 Subject: [Python-es] =?iso-8859-1?q?Ejecutar_acci=F3n_al_salir_de_un_FTP?= In-Reply-To: <2026382264.743141270567538729.JavaMail.root@ucimail4.uci.cu> References: <2026382264.743141270567538729.JavaMail.root@ucimail4.uci.cu> Message-ID: ExecOnExit ? http://www.proftpd.org/docs/contrib/mod_exec.html El 6 de abril de 2010 17:25, Jorge Luis Betancourt Gonzalez < jlbetancourt en estudiantes.uci.cu> escribió: > Hola lista: > > Tengo la siguiente situación, un usuario se conecta a un servidor FTP y > sube ciertos ficheros, en ese servidor hay un script de python que se supone > que tome esos datos que se subieron y les haga algún procesamiento. Necesito > que en cuanto el usuario termine la sesión en el servidor FTP se comience a > procesar la información, pero cómo puedo saber desde python el momento > preciso en que el usuario se desconectó del FTP? > > slds > -- > "It is only in the mysterious equation of love that any > logical reasons can be found." > "Good programmers often confuse halloween (31 OCT) with > christmas (25 DEC)" > _______________________________________________ > 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 jlbetancourt en estudiantes.uci.cu Tue Apr 6 18:49:36 2010 From: jlbetancourt en estudiantes.uci.cu (Jorge Luis Betancourt Gonzalez) Date: Tue, 6 Apr 2010 12:49:36 -0400 (CDT) Subject: [Python-es] =?utf-8?q?Ejecutar_acci=C3=B3n_al_salir_de_un_FTP?= In-Reply-To: Message-ID: <1614166628.791491270572576313.JavaMail.root@ucimail4.uci.cu> De momento me vale, vamos a ver si con esto resuelvo, lo otro que se me ocurrió fue tratar de parsear el el log de proftpd y buscar por la actividad de desconexión a ver que tal va. Que creen? slds -- "It is only in the mysterious equation of love that any logical reasons can be found." "Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)" ----- Mensaje original ----- De: "Aitor" Para: "La lista de python en castellano" Enviados: Martes, 6 de Abril 2010 11:48:57 GMT -05:00 Región oriental EE. UU./Canadá Asunto: Re: [Python-es] Ejecutar acción al salir de un FTP ExecOnExit ? http://www.proftpd.org/docs/contrib/mod_exec.html El 6 de abril de 2010 17:25, Jorge Luis Betancourt Gonzalez < jlbetancourt en estudiantes.uci.cu > escribió: Hola lista: Tengo la siguiente situación, un usuario se conecta a un servidor FTP y sube ciertos ficheros, en ese servidor hay un script de python que se supone que tome esos datos que se subieron y les haga algún procesamiento. Necesito que en cuanto el usuario termine la sesión en el servidor FTP se comience a procesar la información, pero cómo puedo saber desde python el momento preciso en que el usuario se desconectó del FTP? slds -- "It is only in the mysterious equation of love that any logical reasons can be found." "Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)" _______________________________________________ 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 lasizoillo en gmail.com Tue Apr 6 19:41:51 2010 From: lasizoillo en gmail.com (lasizoillo) Date: Tue, 6 Apr 2010 19:41:51 +0200 Subject: [Python-es] =?utf-8?q?Ejecutar_acci=C3=B3n_al_salir_de_un_FTP?= In-Reply-To: <1614166628.791491270572576313.JavaMail.root@ucimail4.uci.cu> References: <1614166628.791491270572576313.JavaMail.root@ucimail4.uci.cu> Message-ID: El día 6 de abril de 2010 18:49, Jorge Luis Betancourt Gonzalez escribió: > De momento me vale, vamos a ver si con esto resuelvo, lo otro que se me ocurrió fue tratar de parsear el el log de proftpd y buscar por la actividad de desconexión a ver que tal va. > > Que creen? > Que el top-posting es casi tan malo como el ftp. Pero suponiendo que no se pueden hacer scp's y ejecutar el script de forma remota... ¿Cuantos usuarios concurrentes vas a tener? ¿Se conectan con el mismo usuario o diferentes? Si ejecutas un script cada vez que un usuario cierra la sessión; puedes ejecutar una tarea sobre el fichero que el ha terminado, pero también sobre un fichero que otro usuario tiene a medias. Si no vas a tener problemas de concurrencia, estupendo. ¿El proftpd bloquea de alguna manera los ficheros mientras los escribe? Puedes monitorizar (polling o eventos) con un demonio los ficheros que vayan llegando y esperar a que dejen de estar bloqueados. Aunque esto no llegaría a esperar a que el usuario cerrara la sesión. Lo procesaria según termina de subirlo :-( Otra opción es adaptar un servidor ftp hecho en python para ejecutar el script cuando se dan las condiciones necesarias. Ejemplo: http://code.google.com/p/pyftpdlib/ Suerte y un saludo: Javi From jlbetancourt en estudiantes.uci.cu Tue Apr 6 19:54:52 2010 From: jlbetancourt en estudiantes.uci.cu (Jorge Luis Betancourt Gonzalez) Date: Tue, 6 Apr 2010 13:54:52 -0400 (CDT) Subject: [Python-es] =?utf-8?q?Ejecutar_acci=C3=B3n_al_salir_de_un_FTP?= In-Reply-To: Message-ID: <1115536888.828661270576492573.JavaMail.root@ucimail4.uci.cu> > Que el top-posting es casi tan malo como el ftp. Pero suponiendo que > no se pueden hacer scp's y ejecutar el script de forma remota... Mis disculpas por el top-posting, y no, de momento scp no me sirve para lo que necesito, debe ser de forma automática ante cada fin de sesión en el servidor FTP. > ¿Cuantos usuarios concurrentes vas a tener? ¿Se conectan con el mismo > usuario o diferentes? Si ejecutas un script cada vez que un usuario > cierra la sessión; puedes ejecutar una tarea sobre el fichero que el > ha terminado, pero también sobre un fichero que otro usuario tiene a > medias. Si no vas a tener problemas de concurrencia, estupendo. De momento son varias personas y conectados por usuarios diferentes, esto ya lo había pensado, pensé que con ayuda de ExecOnConnect ir guardando los usuarios que van entrando y luego ir procesando a medida que se desconectan los ficheros que pertenecen a ese usuario nada más y así con todos. Tampoco se espera una gran concurrencia de usuarios o sea no espero que sean 100 o 200 usuarios utilizando al mismo tiempo, pero de todos modos, es un punto a tener en cuenta. > ¿El proftpd bloquea de alguna manera los ficheros mientras los > escribe? Puedes monitorizar (polling o eventos) con un demonio los > ficheros que vayan llegando y esperar a que dejen de estar bloqueados. > Aunque esto no llegaría a esperar a que el usuario cerrara la sesión. > Lo procesaria según termina de subirlo :-( En realidad no he visto muy de cerca el proftpd, pero es que tampoco me sirve porque la acción tiene que ejecutarse una vez el usuario ha concluido su sesión :-( > Otra opción es adaptar un servidor ftp hecho en python para ejecutar > el script cuando se dan las condiciones necesarias. Ejemplo: > http://code.google.com/p/pyftpdlib/ De momento es cuasi-obligatorio utilizar proftpd, pero si no encuentro alguna forma de hacer esto, no me va a quedar otra opción. slds -- "It is only in the mysterious equation of love that any logical reasons can be found." "Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)" From jordi.f en ati.es Tue Apr 6 21:21:22 2010 From: jordi.f en ati.es (Jordi Funollet) Date: Tue, 6 Apr 2010 21:21:22 +0200 Subject: [Python-es] =?iso-8859-1?q?Ejecutar_acci=F3n_al_salir_de_un_FTP?= In-Reply-To: <1115536888.828661270576492573.JavaMail.root@ucimail4.uci.cu> References: <1115536888.828661270576492573.JavaMail.root@ucimail4.uci.cu> Message-ID: <201004062121.22942.jordi.f@ati.es> Dale un vistazo a 'pure-ftpd'. Una de las opciones que tiene es lanzar un script (con 'pure-uploadscript -B -r