[Python-es] Wrapper para ficheros (i.e. file objects)

Olemis Lang (Simelix) olemis+py en gmail.com
Mie Ene 20 15:51:54 CET 2010


2010/1/20 Medardo Rodriguez (Merchise Group) <med.swl en gmail.com>:
> On 1/19/10, Manuel Alejandro Cerón Estrada <ceronman en gmail.com> wrote:
>> El módulo StringIO[1] de la librería estándar permite hacer eso. Sería
>>  algo como esto:
>>
>>  import StringIO
>>  wrapper = StringIO.StringIO(fileobject.read())
>>  print wrapper.readline()
>>
>>  StringIO trabaja en la memoria, así que si el archivo es muy grande no
>>  funcionará
>
> Sí funciona, pero no es un wrapper de un objeto con el método read. Lo
> que haces es leer la cadena del fichero y tratarla con StringIO. Si
> tuvieras un fichero enorme (que no quepa en memoria), que es cuanto
> estos wrappers adquieren más sentido, esto que propones sería inútil.
>

Les comento el contexto para ilustrar porque Medardo tiene razón.
Trato de implementar una componente para TracGViz [1]_ [4]_ que lea
los contenidos de «un fichero con tablas» (un término borroso ya verán
porque más adelante ;o) , use la API de MIME de Trac para encontrar
una conversión y transformar el fichero en una instancia de
`gviz_api.DataTable` y así poder representarlos en una gráfica que
soporte el protocolo de Google Visualization API (e.g. utilizando un
gadget de iGoogle [2]_).

Hay ejemplos concretos (e.g. uso científico ) que visualizan tablas
con varios miles de filas. Eso haría muy grandes los ficheros
originales y el servidor que corre a Trac utilizaría muchos recursos q
podrían ser innecesarios si se considera q se pueden filtrar
utilizando Google Visualization API Query Language. El protocolo de
iteradores implementados por los ficheros debería ser suficiente ...
pero resulta que la API de VCS de Trac retorna un objeto que solo
tiene el método `read` ... gggrrrgrgrrrr

:$

Una implementación como la q sugiere Manuel Alejandro (incluso más
eficiente porq utiliza cStringIO si está disponible ;o) ya ha sido
implementada [3]_ , pero en un «entorno real» es altamente
ineficiente, por eso busco algo de esto .

Cualquier sugerencia será bienvenida !

.. [1] TracGviz @ GViz Gallery
        (http://code.google.com/apis/visualization/documentation/toolsgallery.html)

.. [2] Añadir gadgets de Google en entradas (artículos) de Blogger.
        (http://simelo-es.blogspot.com/2009/01/aadir-gadgets-de-google-en-entradas.html)

.. [3] Added GViz provider to convert contents of files in VCS (TODO:
Optimize !!!)
        (http://simelo.hg.sourceforge.net/hgweb/simelo/trac-gviz/rev/56529c96523b?revcount=110)

.. [4] TracGviz
        (https://opensvn.csie.org/traccgi/swlcu/wiki/En/Devel/TracGViz)

-- 
Regards,

Olemis.

Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/

Featured article:
Added TODOs and changes in docs ... bah !  -
http://flioops.hg.sourceforge.net/hgweb/flioops/dutest/rev/320aaa75ae60



Más información sobre la lista de distribución Python-es