• Miércoles 1 de Mayo de 2024, 20:38

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - NRM

Páginas: 1 [2] 3 4 ... 12
26
Python / Re: Procesamiento de XML con PYTHON
« en: Jueves 25 de Septiembre de 2008, 07:53 »
Cita de: "su -"
El problema es que Python es un poco lento (mas lento que Perl, ya que Python no precompila el codigo como Perl lo hace) y todos los scripts en jeneral... en resumen, lo mejor seria usar C/C++

En esta pagina[1] tenes informacion sobre el tema de la compilacion de los modulos de python.
Si el problema es la performance se puede extender python utilizando C[2], solo para tener otra opcion.
Esta otra[3] tiene un benchmark sobre ambos lenguajes.

Saludos

nrm

[1] - http://docs.python.org/tut/node8.html#S ... 0000000000
[2] - http://www.python.org/doc/ext/intro.html
[3] - http://shootout.alioth.debian.org/gp4/python.php

27
Python / Re: Procesamiento de XML con PYTHON
« en: Jueves 25 de Septiembre de 2008, 07:40 »
Cita de: "sonrisitas"
Hola!, les cuento cual es el problema...
Necesito procesar un archivo xml de 500 MB en python, leyendo en la web encontre que libxml2 era apto para cosas grandes. Pero no es asi... ya que en una maquina con 2 G no lo puede procesar, y en un cluster demora 6 horas, necesito urgente si alguien conoce que puedo usar para que no ocupe tanta memoria y para que termine rapido.
Gracias!

Yo tuve el mismo problema hace un tiempo atras, por lo tanto te voy a comentar mi experiencia.

Los archivos xml que tenia que procesar eran de alrededor de 200MB y cuando los procesaba me consumian mucha memoria.
Despues de investigar note que hay diferentes formas de parsear un xml. Seguramente lo que te esta ocurriendo es lo mismo que me ocurrio a mi, yo utilice DOM[1] para procesar el xml.
El problema es que DOM para procesar el archivo genera un modelo de objetos a partir del xml, por lo tanto en mi caso iba a utilizar mas de 200MB para poder armar el modelo en memoria.
Buscando ayuda encontre otra alternativa llamada SAX[2]. Este en vez de cargar todo en memoria utiliza una api event-driven, que llama metodos segun se abra o cierre un tag.
Por lo tanto SAX podria ser la solucion para tu problema. Aca pongo un ejemplo que es bastante auto explicativo, espero te sirva.

Código: Text
  1. import sys
  2.  
  3. from xml.sax import make_parser, handler
  4.  
  5. class FancyCounter(handler.ContentHandler):
  6.  
  7.     def __init__(self):
  8.         self._elems = 0
  9.         self._attrs = 0
  10.         self._elem_types = {}
  11.         self._attr_types = {}
  12.  
  13.     def startElement(self, name, attrs):
  14.         self._elems = self._elems + 1
  15.         self._attrs = self._attrs + len(attrs)
  16.         self._elem_types[name] = self._elem_types.get(name, 0) + 1
  17.  
  18.         for name in attrs.keys():
  19.             self._attr_types[name] = self._attr_types.get(name, 0) + 1
  20.  
  21.     def endDocument(self):
  22.         print "There were", self._elems, "elements."
  23.         print "There were", self._attrs, "attributes."
  24.  
  25.         print "---ELEMENT TYPES"
  26.         for pair in  self._elem_types.items():
  27.             print "%20s %d" % pair
  28.  
  29.         print "---ATTRIBUTE TYPES"
  30.         for pair in  self._attr_types.items():
  31.             print "%20s %d" % pair
  32.  
  33.            
  34. parser = make_parser()
  35. parser.setContentHandler(FancyCounter())
  36. parser.parse(sys.argv[1])
  37.  
  38.  


Saludos

nrm

[1] - http://en.wikipedia.org/wiki/Document_Object_Model
[2] - http://en.wikipedia.org/wiki/Simple_API_for_XML

28
Python / Re: Existe Wget En Python???????
« en: Sábado 19 de Julio de 2008, 09:03 »
Cita de: "gartuz_Original"
Hola precisamente me gustaŕia saber si usando urlretrieve yo puedo hacer que el archivo se descargue cada cierto tiempo ya que el archivo que necesito descargar se actualiza cada media hora.

tambien podrias usar sleep dentro de un while entre muchas otras opciones.

nrm

29
GNU/Linux / Re: Dudas sobre ubuntu!!!
« en: Miércoles 25 de Junio de 2008, 16:27 »
es un rar?
deberia ser un iso.
de donde bajaste el archivo?
deberias bajar la iso de un mirror como por ejemplo: http://releases.ubuntu.com.ba/hardy/ubu ... p-i386.iso

saludos

nrm

30
GNU/Linux / Re: Dudas sobre ubuntu!!!
« en: Miércoles 25 de Junio de 2008, 06:32 »
lo que te bajaste seguramente sea la iso, la debes grabar en un cd y bootear con ese cd.
despues la instalacion es bastante simple e intuitiva.
las particiones las puedes hacer desde la instalacion, pero si deberias ya tener hecho un resize de tu particion o tener espacio libre.

saludos

nrm

31
Python / Re: Editor Y Libreria Para Python
« en: Miércoles 20 de Febrero de 2008, 23:01 »
yo en mi caso utilizo vi en unix y pywin32 en windows para editar.
en el caso de las librerias, depende de lo que quieras hacer y como lo quieras hacer.

saludos

nrm

32
Python / Re: Pregunta Sobre Python
« en: Martes 19 de Febrero de 2008, 22:53 »
espero que te guste el lenguaje y ante cualquier duda, puedes preguntar aqui.

saludos

nrm

33
Python / Re: Todo Acerca De Etiquetadores
« en: Jueves 7 de Febrero de 2008, 00:55 »
Este sub-foro solo es para hacer consultas de python.
Me parece que debes consultar en otro lado.

nrm

pd: este mensaje se autodestruira (ya que no debe estar aca).

34
Python / Re: El Rpograma No Se Ejecuta
« en: Jueves 17 de Enero de 2008, 03:42 »
Cita de: "rakios"
Esta vivo¡¡¡¡¡¡   :lol:

muchas gracias ya funciona, pero solo tengo una pregunta, ¿cual era el error? por que tuve que agregar esa linea al principio del codigo 

¿tendran algun documento donde venga como poder solucionar este tipo de errores?  :D

muchas gracias  :D

el error era que estabas utilizando caracteres con un encoding no estandar, para solucionarle le definimos que utilize el encondig iso-8859-15 (seguramente estabas utilizando un caracter con acento, ñ, etc).

los errores que generalmente uno obtiene en python son simples de entender y de no entenderlo puedes buscar en la red (hay mucha informacion de python). sino puedes consultar en el foro (aunque siempre es recomendable buscar un poco antes).

la documentacion de python esta en ingles, sin embargo se que hay algunas versiones traducidas al español (no tengo el link a mano).

saludos

nrm

pd: siempre que escribas alguna consulta en el foro, es recomendable que pongas el codigo que genera el error o por lo menos la linea donde este se encuentra.

35
Python / Re: El Rpograma No Se Ejecuta
« en: Miércoles 16 de Enero de 2008, 03:59 »
proba agregando esta linea al principio del codigo.

Código: Text
  1. # -*- coding: iso-8859-15 -*-
  2.  

siempre que tengas porblemas como estos, es necesario que publiques el codigo o parte de este para poder asi ayudarte.

saludos

nrm

36
Python / Re: El Rpograma No Se Ejecuta
« en: Lunes 14 de Enero de 2008, 03:49 »
podes agregar el siguiente codigo para que no se cierre la consola.

Código: Text
  1. raw_input("presione enter para salir...")
  2.  

saludos

nrm

37
Python / Re: Unir Dos Funciones En Una
« en: Jueves 10 de Enero de 2008, 04:37 »
aca esta el codigo con algunas modificaciones, tu consulta esta resuelta dentro del metodo "buscar_receta_con_ingrediente".

Código: Text
  1. class Recetas:
  2.   def __init__(self, nombre):
  3.     self.nombre_plato = nombre
  4.     self.ingredientes_solidos = []
  5.     self.ingredientes_liquidos = []
  6.  
  7.   def proporcionar_ingredientes_solidos(self, solidos):
  8.     self.ingredientes_solidos.append(solidos)
  9.  
  10.   def proporcionar_ingredientes_liquidos(self, liquidos):
  11.     self.ingredientes_liquidos.append(liquidos)
  12.  
  13.   def buscar_receta_con_ingredientes(self, ingrediente):
  14.     for elemento in self.ingredientes_liquidos:
  15.       if elemento == ingrediente:
  16.         print self.nombre_plato
  17.         break
  18.     for elemento in self.ingredientes_solidos:
  19.       if elemento == ingrediente:
  20.         print self.nombre_plato
  21.         break
  22.  
  23.   def __str__(self):
  24.     representacion = "NOMBRE DEL PLATO: " + self.nombre_plato + '\n'
  25.     representacion += "INGREDIENTES: -Solidos-: "
  26.     for solidos in self.ingredientes_solidos:
  27.       representacion += solidos + ', '
  28.     representacion += "-Liquidos-: "
  29.     for liquidos in self.ingredientes_liquidos:
  30.       representacion += liquidos + ', '
  31.     return representacion
  32.  
  33. if __name__ == "__main__":
  34.   a = Recetas("Tarta_de_Manzana")
  35.   a.proporcionar_ingredientes_solidos("manteca")
  36.   a.proporcionar_ingredientes_solidos("turron")
  37.   a.proporcionar_ingredientes_liquidos("leche")
  38.   a.buscar_receta_con_ingredientes("leche")
  39.  

me parece que hay mejores formas de resolver este problema y no usar 2 for, pero esta es la mas simple de hacer sin modificar mucho el codigo de la clase.

con respecto a lo del color depende de la terminal que utilices, en linux se puede hacer, en windows no sabria decirte.

te recomiendo que utilices variables que no contengan caracteres con tildes, tambien te recomendaria que utilices "self" en vez de propio. esto te va a ayudar a que otros programadores puedan leer el codigo mas facilmente y cuando pongas codigo en el foro intenta utilizar el tag CODE para una mejor lectura.

saludos

nrm

38
Python / Re: Unir Dos Funciones En Una
« en: Martes 8 de Enero de 2008, 03:10 »
Cita de: "sergio2"
Cita de: "RadicalEd"
El moacho declara propio, como la variable self, que vienen en las funciones o en los métodos y constructores de las clases, eso es lo que entiendo.



 

si, propio es "eso" q siempre se pone
self se utiliza en el caso de los metodos y no de las funciones.
si el codigo que pusiste es parte de una clase deberias poner el codigo completo.

nrm

39
Python / Re: Unir Dos Funciones En Una
« en: Sábado 5 de Enero de 2008, 15:55 »
hola,

para ayudarte mejor necesitaria saber de que tipo es "propio".
y si el codigo no es muy largo y  podes ponerlo  todo, mejor.

saludos

nrm

40
Python / Re: Borrar Líneas De Un Archivo
« en: Jueves 6 de Diciembre de 2007, 05:39 »
en este momento solo se me ocurre esta forma.

Código: Text
  1. output = ""
  2. fdi = open("c:\\note.txt", "r")
  3. for line in fdi:
  4.   if line.strip() != "line 2":
  5.     output += line
  6. fdi.close()
  7. fdo = open("c:\\note.txt", "w")
  8. fdo.write(output)
  9. fdo.close()
  10.  

como algo extra, te recomiendo que uses el modulo cmd[1] para hacer scripts que tengan un sistema de menus como el que pusiste arriba.

nrm

[1] - http://docs.python.org/lib/module-cmd.html

41
Python / Re: Lectura De Archivos Planos
« en: Martes 20 de Noviembre de 2007, 04:50 »
Cita de: "joacoRamone"
Hola, fijate si esto te ayuda un poco.


Código: Text
  1. import sys
  2.  
  3. def leer_archivo():
  4.     try:
  5.         arch = open("/home/joaco/programacion/linux/palabras.txt")
  6.     except IOError:
  7.         print "Archivo no encontrado."
  8.         sys.exit(1)
  9.  
  10.     # inicializamos el diccionario
  11.     correspondencias = {}
  12.     # una de las tantas maneras de crear un diccionario
  13.     correspondencias=dict([(linea[:-1].split()[0], linea[:-1].split()[1:len(linea)])
  14.                         for linea in arch.readlines()])
  15.  
  16.     return correspondencias
  17.  
  18. if __name__ == "__main__":
  19.     d = leer_archivo()
  20.     for val, abr in d.iteritems():
  21.         if sys.argv[1] in abr:
  22.             print val
  23.  

No lo probe con un archivo grande, si queres pasame el tuyo y lo pruebo.

Saludos.

Cita de: "b.to"
Por otro lado, tengo un archivo plano (de 450 mil linead) en el que tengo una lista en la que el pirimer valor en de cada linea corresponde a un texto estandarizado al que corresponden el resto de los valores en esa misma linea, algo como lo siguiente:
"HERNANDEZ, HDZ. HDZ, HNDZ, HRDEZ, HRNDEZ"
"MARIA, MA., MA"
"FRANCISCO, FCO., FRCISCO,"

generando datos random cercanos a las 475000 lineas y armando un diccionario con estos me consumio cerca de 124 megas de ram. no se si sea la mejor solucion :(

nrm

42
Python / Re: Como Hacer Un Cliente Irc En Python
« en: Martes 6 de Noviembre de 2007, 04:26 »

43
Python / Re: Lectura De Archivos Planos
« en: Jueves 1 de Noviembre de 2007, 05:47 »
Python 2.5 trae soporte para Sqlite dentro de su librería estándar. Creo que esto solucionaría tu problema.

Aca te paso algunos links que te pueden ayudar:
http://docs.python.org/lib/module-sqlite3.html
http://www.netadmintools.com/art572.html

Saludos

nrm

44
Python / Re: Lectura De Archivos Planos
« en: Miércoles 31 de Octubre de 2007, 01:56 »
el programa procesa un entrada de datos a la vez?
existe la posibilidad de que te pases a Python 2.5?

nrm

45
Python / Re: Lectura De Archivos Planos
« en: Miércoles 17 de Octubre de 2007, 02:03 »
Cita de: "b.to"
eey, gracias por tu respuesta.
Te comento que de hecho ya había pensado en utilizar un diccionario, el problema es que los dicconarios son en formato [key] --> [value] y en este caso la parte de [value] es de uno o más valores y también está el hecho de que estamos hablando de un diccionario que es de mas de un millón de registros. Podría usar una base de datos, pero no es posible  :(

jejeje
como ven? alguna idea?  :ph34r:

Saludotes

Podrías poner algunos datos de ejemplo para tener una mejor idea?
Estas usando Python 2.5?

nrm

46
Python / Re: Lectura De Archivos Planos
« en: Martes 16 de Octubre de 2007, 05:57 »
Citar
¿Existe alguna forma de que al momento de ejecutar Python, este cargue una variable que pueda usar para cualquier programa?¿Hay alguna forma de que mi programa solo lea el archivo de texto una sola vez?

hola, bienvenido al foro.

si comprendí bien tu problema esta en que lees el archivo cada vez que necesitas remplazar una abreviación, de ser este el problema, yo te recomendaría que cargues el archivo en un set o diccionario con todos los valores de las abreviaciones(esto asumiendo que son del tipo key, value). después solo deberías usar ese diccionario que esta cargado en memoria.

espero que te sea útil y disculpa la tardanza de la respuesta.

47
Python / Re: Problemas Con Pygame
« en: Viernes 3 de Agosto de 2007, 06:41 »
si puedes subir el codigo que se encarga de mostrar las fotos y dar algunos datos sobre estas(size, resolution, etc), seria de gran utilidad.

saludos

nrm

48
C/C++ / Re: Redireccionar Salida De Un Proceso
« en: Miércoles 25 de Julio de 2007, 04:24 »
Aca tenes un link[1] con el sample que viene en la libreria.
Espero te sirva.

nrm

[1] - http://g.slyip.com/?f=12294

49
Python / Re: 3d En Python
« en: Jueves 19 de Julio de 2007, 06:28 »
definitivamente voto a favor de pygame, creo que seria la mejor eleccion.

50
Python / Re: Paso De Inf Entre Formularios
« en: Domingo 1 de Julio de 2007, 22:55 »
Necesitarla un poco mas de información para poder ayudarte.
Como por ejemplo en donde esta ese formulario, en la web(mod_python, turbogears, etc), en una gui(gtk, qt, etc), otros.

Saludos

nm

Páginas: 1 [2] 3 4 ... 12