Supongamos que tengo un StringIO
(desde cStringIO
). Quiero leer el búfer de ella hasta que algunos caracteres/byte se encuentra, por ejemplo 'Z', por lo que:forma rápida de leer desde StringIO hasta que se encuentre un byte
stringio = StringIO('ABCZ123')
buf = read_until(stringio, 'Z') # buf is now 'ABCZ'
# strinio.tell() is now 4, pointing after 'Z'
Cuál es la forma más rápida de hacerlo en Python? Gracias
¡Muy buena solución! Se ocupa de la pesada sobrecarga de Python en llamadas a funciones. El único inconveniente es que tienes en la memoria un objeto 'datalist' redundante. Es posible reescribir este código con generador en lugar de función ('join' acepta iteradores), por lo que no habrá objetos redundantes temporales en la memoria. – ovgolovin
Pero la versión del generador resulta ser un poco más lenta: http://ideone.com/dQGe5 (Si una cadena es grande (símbolos de 1 mln), entonces la versión del generador es un poco más rápida). – ovgolovin
Por cierto, ¿por qué has elegido los trozos de símbolo '256'? (¿por qué no '512' o' 1024'?) – ovgolovin