Re: [Python-es] duda con subprocess.Popen

2011-01-27 Por tema tny
El problema es que yo uso mi propia librería de procesos basada en
eventos, y aún no la tengo integrada con el sistema de eventos de pygtk.

En tu caso y pensandolo mejor no necesitas otro proceso, y además
hacerlo a pelo sería demasiado complicado.
Con un trhead es suficiente y no necesitas ni sockets ni serializar los
datos.

Para el hilo
http://docs.python.org/library/threading.html#thread-objects

Para recorrer los directorios
http://docs.python.org/library/os.html#os.walk

Para recojer lo datos que necesites (fecha, tamaño, propietario...)
http://docs.python.org/library/os.path.html 

Para pasar los datos del thread que recore los directorios al thread
principal no hay que hacer muchos malabarismos:
- Puedes o bien usar directamente la lista, el diccionario o el objeto
que sea, con la única precaución de utilizar locks en donde sea
necesario.
Por ejemplo que un thread modifique una lista mientras otro thread esta
iterándola puede ser peligroso.
- Más fácil aún pues te evitas cualquier problema de estos, es que el
thread hijo provoque un evento que el thread padre procesará cuando le
toque. De modo que sólo es el proceso padre el que accede a dicho
diccionario, lista o lo que sea.

Siento no serte de mayor ayuda.
Hace mucho que no toco threads ni pygtk. 
  


El mié, 26-01-2011 a las 07:22 -0500, Tony Peña escribió:
 podrias poner un ejemplo claro? y corto para poder asociarlo a lo que
 tengo?
 
 gracias
 
 El 26 de enero de 2011 04:12, tny a.por...@gmail.com escribió:
 
  El mar, 25-01-2011 a las 14:50 -0400, Tony Peña escribió:
   disculpen es el mismo correo pero
  
   .. necesito ir parseando ese fichero _no_ luego _sino_
 mientras lo
   va
   creando una onda como que en lo que se va desarrollando yo irle
   haciendo un
   tail -f al fichero que el subprocess(cmd) esta ejecutando...pero
   dentro de
   python para usarlo contra el objeto
   eso :)
  
 
  Yo no usaría ls, yo lo haría desde python, en un proceso hijo que me
  escribiese en un socket AF_UNIX o en un pipe los datos que necesito
  según los va adquiriendo.
  La ventaja es que te evitas esperar por buffers, y también te evitas
  tener que parsear el texto, porque enviarías directamente un
 diccionario
  (o una tupla) serializado con pickle.
 

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ¿Cómo manejo los caracteres especiales?

2011-01-27 Por tema Douglas Jiménez
El 26 de enero de 2011 18:55, Daπid davidmen...@gmail.com escribió:

 2011/1/26 Douglas Jiménez doug...@gmail.com:
  Confieso (espero que no sea una especie de sacrilegio) que no sabía que
 se
  podían enviar mensajes de acción al intérprete. En realidad, tenía muchos
  años sin programar. Siempre había pensado que una línea de comentario
  comenzaba con un caracter particular que le decía al interprete (o
  compilador) que todo lo que estaba hasta el final de la línea no debía
 ser
  tomado en cuenta.

 Ignoro si hay más casos, pero el encode es una orden bastante
 especial. De hecho, no puede ir en cualquier sitio, sino que sólo es
 válido en la primera o segunda línea del programa.


Creo que en alguna parte lo leí como magic comment

D.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] duda con subprocess.Popen

2011-01-27 Por tema Tony Peña
vale, ya andaba por thread a ver si me resultaba pero estube pensando
tambien otra opcion que quizas sea otra via es que:

podria abrir el fichero antes de ejecutar el proceso y ponerle un seek(0)
como posicion inicial, ejecutar con el thread el proceso, y mientras esta
escribiendo el seek comience a ir parseando
y hacer un recorrido hasta donde se vaya creando mientras se parsea como
2das cosas que debe hacer, y luego seguir recorriendo el fichero
con el mismo seek
eso podria resolver tambien?

vaya es algo tan sencillo como cualquiera que manda a hacer algo en bash y
le mande la salida a un log y por otro lado este el tail -f mirando el log
que se ve como avanza cuando sucede algo y sino se queda esperando hasta que
le pasen el Ctrl C entiendes?

bueno eso mismo pero en python

saludos

El 27 de enero de 2011 05:29, tny a.por...@gmail.com escribió:

 El problema es que yo uso mi propia librería de procesos basada en
 eventos, y aún no la tengo integrada con el sistema de eventos de pygtk.

 En tu caso y pensandolo mejor no necesitas otro proceso, y además
 hacerlo a pelo sería demasiado complicado.
 Con un trhead es suficiente y no necesitas ni sockets ni serializar los
 datos.

 Para el hilo
 http://docs.python.org/library/threading.html#thread-objects

 Para recorrer los directorios
 http://docs.python.org/library/os.html#os.walk

 Para recojer lo datos que necesites (fecha, tamaño, propietario...)
 http://docs.python.org/library/os.path.html

 Para pasar los datos del thread que recore los directorios al thread
 principal no hay que hacer muchos malabarismos:
 - Puedes o bien usar directamente la lista, el diccionario o el objeto
 que sea, con la única precaución de utilizar locks en donde sea
 necesario.
 Por ejemplo que un thread modifique una lista mientras otro thread esta
 iterándola puede ser peligroso.
 - Más fácil aún pues te evitas cualquier problema de estos, es que el
 thread hijo provoque un evento que el thread padre procesará cuando le
 toque. De modo que sólo es el proceso padre el que accede a dicho
 diccionario, lista o lo que sea.

 Siento no serte de mayor ayuda.
 Hace mucho que no toco threads ni pygtk.



 El mié, 26-01-2011 a las 07:22 -0500, Tony Peña escribió:
  podrias poner un ejemplo claro? y corto para poder asociarlo a lo que
  tengo?
 
  gracias
 
  El 26 de enero de 2011 04:12, tny a.por...@gmail.com escribió:
 
   El mar, 25-01-2011 a las 14:50 -0400, Tony Peña escribió:
disculpen es el mismo correo pero
   
.. necesito ir parseando ese fichero _no_ luego _sino_
  mientras lo
va
creando una onda como que en lo que se va desarrollando yo irle
haciendo un
tail -f al fichero que el subprocess(cmd) esta ejecutando...pero
dentro de
python para usarlo contra el objeto
eso :)
   
  
   Yo no usaría ls, yo lo haría desde python, en un proceso hijo que me
   escribiese en un socket AF_UNIX o en un pipe los datos que necesito
   según los va adquiriendo.
   La ventaja es que te evitas esperar por buffers, y también te evitas
   tener que parsear el texto, porque enviarías directamente un
  diccionario
   (o una tupla) serializado con pickle.
  

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] regex

2011-01-27 Por tema Jose Caballero
El 27 de enero de 2011 12:27, chakalinux chakali...@gmail.com escribió:

 Hola, intento buscar palabras en una cadena usando regexp, a ver si me
 explico, si tengo por ejemplo esta cadena:

 cad = uhola como están

 Quiero que me re me encuentre la cadena cad (puede variar)
 independientemente de su posición, (creo que se llama lookahead), o sea:

 como estan ustedes hola = true
 hola, ustedes estan bien ? como están = true
 [...]

 Solo he llegado a esto:

 re.match((?=.*hola)(?=.*como)(?=.*est.n), cad)

 Esto me funciona pero no me interesa ya que me devuelve siempre true aunque
 ponga: algohola algocomo algoestan y si quito .* no me funciona y
 solo me interesa que encuentra las palabras exactas independientemente del
 orden que estén.

 ...



No he entendido nada.

A ver si me aclaro...

Tienes una cadena inicial, por ejemplo c1=hola como estan.
Luego tienes una segunda cadena c2.
Y ahora quieres ...

(1) saber is c1 es parte de c2.
(2) saber si todas las palabras de c1 estan en c2.
(3) saber si alguna de las palabras de c1 esta en c2.
(4)...
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] regex

2011-01-27 Por tema Chema Cortes
El día 27 de enero de 2011 18:27, chakalinux chakali...@gmail.com escribió:
 Hola, intento buscar palabras en una cadena usando regexp, a ver si me
 explico, si tengo por ejemplo esta cadena:

 cad = uhola como están

 Quiero que me re me encuentre la cadena cad (puede variar)
 independientemente de su posición, (creo que se llama lookahead), o sea:

 como estan ustedes hola = true
 hola, ustedes estan bien ? como están = true
 [...]

 Solo he llegado a esto:

 re.match((?=.*hola)(?=.*como)(?=.*est.n), cad)

 Esto me funciona pero no me interesa ya que me devuelve siempre true aunque
 ponga: algohola algocomo algoestan y si quito .* no me funciona y
 solo me interesa que encuentra las palabras exactas independientemente del
 orden que estén.

No entiendo bien qué problema planteas. El lookahead (ver
adelante) sirve para vincular un patrón de búsqueda con lo que
aparece más adelante en la cadena. En realidad en el patrón de
búsqueda que propones no indicas qué tiene que buscar (los lookahead
no seleccionan nada).

Si tienes las cosas claras, puede que el módulo 're' sirva para tus
propósitos, pero a veces es mejor no obsesionarse con ello y tratar de
hacerte tus propias búsquedas a medida. Otra forma de verlo es
descomponiendo el problema en procesos más sencillos, tal vez
concatenando dos búsquedas.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] regex

2011-01-27 Por tema gerardo Juarez

Hola,

Entiendo que quieres buscar que todas las palabras de la cadena estén 
presentes, en cualquier orden, por lo menos una vez.
Si esto es correcto, no te convendría mejor separar estas palabras y 
buscarlas una por una? Una expresión regular para esto,
especialmente *si pueden cambiar de orden* me parece que sería algo 
rebuscado, si es que es posible (no se me ocurre como

de momento). Algo así como:

# s es la cadena a probar; cad contiene las palabras a buscar en 's'.
s = x
for p in cad.split():
   if not s.find(p):
   return 'no-match'
# si llega aqui, encontró todas las palabras de la lista
return 'match'

Lo simple del código me sugiere que podría ser la solución más correcta 
y transparente.


Gerardo

chakalinux wrote:
Hola, intento buscar palabras en una cadena usando regexp, a ver si me 
explico, si tengo por ejemplo esta cadena:


cad = uhola como están

Quiero que me re me encuentre la cadena cad (puede variar) 
independientemente de su posición, (creo que se llama lookahead), o sea:


como estan ustedes hola = true
hola, ustedes estan bien ? como están = true
[...]

Solo he llegado a esto:

re.match((?=.*hola)(?=.*como)(?=.*est.n), cad)

Esto me funciona pero no me interesa ya que me devuelve siempre true 
aunque ponga: algohola algocomo algoestan y si quito .* no 
me funciona y solo me interesa que encuentra las palabras exactas 
independientemente del orden que estén.


...


Un saludo


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
  


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] regex

2011-01-27 Por tema chakalinux
No lo tengo claro si es lookahead o no, el tema es buscar palabras
independientemente del orden que aparezcan

Replanteo la pregunta: ¿ Hay alguna manera usando (regex o no) para que
localice la cadena independientemente del orden ?

Se me ocurre algo como:


msg=hola gente, ubuntu esta bien. Alguien me puede decir que es?
patron=que es ubuntu

Comprueba(msg, patron)

def Comprueba(msg, patron):
for word in patron.split():
if msg.find(word) == -1:
return False
return True


Un saludo


El 27 de enero de 2011 19:53, Chema Cortes pych...@gmail.com escribió:

 El día 27 de enero de 2011 18:27, chakalinux chakali...@gmail.com
 escribió:
  Hola, intento buscar palabras en una cadena usando regexp, a ver si me
  explico, si tengo por ejemplo esta cadena:
 
  cad = uhola como están
 
  Quiero que me re me encuentre la cadena cad (puede variar)
  independientemente de su posición, (creo que se llama lookahead), o sea:
 
  como estan ustedes hola = true
  hola, ustedes estan bien ? como están = true
  [...]
 
  Solo he llegado a esto:
 
  re.match((?=.*hola)(?=.*como)(?=.*est.n), cad)
 
  Esto me funciona pero no me interesa ya que me devuelve siempre true
 aunque
  ponga: algohola algocomo algoestan y si quito .* no me funciona
 y
  solo me interesa que encuentra las palabras exactas independientemente
 del
  orden que estén.

 No entiendo bien qué problema planteas. El lookahead (ver
 adelante) sirve para vincular un patrón de búsqueda con lo que
 aparece más adelante en la cadena. En realidad en el patrón de
 búsqueda que propones no indicas qué tiene que buscar (los lookahead
 no seleccionan nada).

 Si tienes las cosas claras, puede que el módulo 're' sirva para tus
 propósitos, pero a veces es mejor no obsesionarse con ello y tratar de
 hacerte tus propias búsquedas a medida. Otra forma de verlo es
 descomponiendo el problema en procesos más sencillos, tal vez
 concatenando dos búsquedas.
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] regex

2011-01-27 Por tema chakalinux
Tan mal me explico ? a ver. quería buscar una cadena teniendo en cuenta unos
patrones, los patrones pueden variar su orden (a, b, c OR b, c, a OR c, b ,a
[...]) peor ya lo he resuelto.

Es un programa para el irc que conecta a una base de datos sqlite3 y
responde según la pregunta, por ejemplo:

pepito: Que es ubuntu?
bot: pepito, http://es.wikipedia.org/wiki/Ubuntu

La respuesta del bot es automática, en este caso los patrones son: que es
ubuntu, si el usuario pepito hubiera preguntado:

pepito: ubuntu ... y eso que es ?

La respuesta sería la misma, a eso me refería antes con independientemente
del orden buscar la cadena. La función es esta:



def SearchQuestion(name):
cnn = sqlite3.connect(db/profe.db)
pexc = cnn.cursor()

patron, msg = pexc.execute(u'SELECT patron, respuesta FROM
profe;').fetchone()
cnn.close()
name = name.rstrip(?).rstrip(¿)

cicle = False

if patron:

for word in patron.split():
for word2 in name.split():
if word2 == word:
cicle = True
break

if not cicle:return None
cicle = False

return msg

return None


Un saludo y perdona si no me explique correctamente.


El 27 de enero de 2011 19:06, Jose Caballero jcaballero@gmail.comescribió:



 El 27 de enero de 2011 12:27, chakalinux chakali...@gmail.com escribió:

 Hola, intento buscar palabras en una cadena usando regexp, a ver si me
 explico, si tengo por ejemplo esta cadena:

 cad = uhola como están

 Quiero que me re me encuentre la cadena cad (puede variar)
 independientemente de su posición, (creo que se llama lookahead), o sea:

 como estan ustedes hola = true
 hola, ustedes estan bien ? como están = true
 [...]

 Solo he llegado a esto:

 re.match((?=.*hola)(?=.*como)(?=.*est.n), cad)

 Esto me funciona pero no me interesa ya que me devuelve siempre true
 aunque ponga: algohola algocomo algoestan y si quito .* no me
 funciona y solo me interesa que encuentra las palabras exactas
 independientemente del orden que estén.

 ...



 No he entendido nada.

 A ver si me aclaro...

 Tienes una cadena inicial, por ejemplo c1=hola como estan.
 Luego tienes una segunda cadena c2.
 Y ahora quieres ...

 (1) saber is c1 es parte de c2.
 (2) saber si todas las palabras de c1 estan en c2.
 (3) saber si alguna de las palabras de c1 esta en c2.
 (4)...






 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] regex

2011-01-27 Por tema lasizoillo
El día 27 de enero de 2011 22:14, chakalinux chakali...@gmail.com escribió:
 Tan mal me explico ? a ver. quería buscar una cadena teniendo en cuenta unos
 patrones, los patrones pueden variar su orden (a, b, c OR b, c, a OR c, b ,a
 [...]) peor ya lo he resuelto.

 Es un programa para el irc que conecta a una base de datos sqlite3 y
 responde según la pregunta, por ejemplo:

 pepito: Que es ubuntu?
 bot: pepito, http://es.wikipedia.org/wiki/Ubuntu

 La respuesta del bot es automática, en este caso los patrones son: que es
 ubuntu, si el usuario pepito hubiera preguntado:

 pepito: ubuntu ... y eso que es ?


linux_boy: creo que ubuntu es la mejor distro para empezar
bot: linux_boy, http://es.wikipedia.org/wiki/Ubuntu

linux_boy: tiovivo, con ubuntu no pasaría
tiovivo: eso que es?
linux_boy: tiovivo, mira en http://es.wikipedia.org/wiki/Ubuntu

El algoritmo que propones va a fallar con falsos positivos (primer
ejemplo) y falsos negativos (segundo ejemplo). La gran ventaja es que
es muy simple. Si te interesa el tema del procesamiento del lenguaje
natural puedes echarle un vistazo al libro del nltk:
http://www.nltk.org/book

Para implementar tu algoritmo yo usaría sets. Es facil con ellas ver
si un conjunto de palabras (ubuntu, que, es) está contenido en el
conjunto de palabras del mensaje de IRC.

Saludos:

Javi
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/