[Python-es] StringIO vs string

Olemis Lang (Simelix) olemis+py en gmail.com
Jue Abr 1 19:42:36 CEST 2010


2010/4/1 Antonio Fernandez Porrua <a.porrua en gmail.com>:
> 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



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