Siddharth Kshirsagar

Sigue
1 de agosto, 2020 – 2 min read

Foto de Robert Thiemann en Unsplash
  1. StringIO y BytesIO son métodos que manipulan datos de cadenas y bytes en memoria.
  2. StringIO se utiliza para los datos de cadena y BytesIO se utiliza para los datos binarios.
  3. Estas clases crean un objeto similar a un archivo que opera con datos de cadena.
  4. Las clases StringIO y BytesIO son más útiles en escenarios donde se necesita imitar un archivo normal.

En este caso los datos no se mantendrán en la memoria(RAM) después de ser escritos en el archivo

En este caso en lugar de escribir el contenido en un archivo, se escribe en un buffer de memoria.(un trozo de ram)

Esencialmente escribir usando la clase BytesIO es equivalente a

space = b""
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"

Entonces por qué definimos io.BytesIO() y por qué no usar la concatenación de bytes?

Ans: Optimización y Rendimiento

¿Hay otra forma a través de la cual podamos leer datos en un buffer de memoria mutable?

Sí podemos utilizar el método readinto() de file a object.

  1. El método readinto() de files puede utilizarse para llenar cualquier array preasignado con datos. Incluyendo arrays creados a través del módulo numpy.
  2. A diferencia del método normal read() el método readinto() rellena el contenido de un buffer existente en lugar de asignar nuevos objetos y devolverlos.
  3. Así podemos usarlo para evitar hacer asignaciones de memoria extra.

Ejemplos:

Quieres leer datos binarios directamente en un buffer mutable sin ninguna copia intermedia para manipular los datos binarios

.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *