![](https://miro.medium.com/fit/c/96/96/1*d72O1D9Zb81oQvQ-DxYkGA.jpeg)
Siddharth Kshirsagar
Follow
Ago 1, 2020 – 2 min ler
/div>
div>
- StringIO e BytesIO são métodos que manipulam dados de cordas e bytes na memória.
- StringIO é usado para dados de string e BytesIO é usado para dados binários.
- Estas classes criam ficheiros como objectos que funcionam com dados de string.
- As classes StringIO e BytesIO são mais úteis em cenários onde é necessário imitar um ficheiro normal.
Neste caso os dados não serão guardados na memória (RAM) depois de serem escritos no ficheiro
Neste caso, em vez de escrever o conteúdo num ficheiro, são escritos num buffer de memória.(um pedaço de ram)
escreveressencialmente usando a classe BytesIO é equivalente a
space = b""
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
Então porque definimos io.BytesIO() e porque não usar a concatenação de bytes ?
Ans: Optimização e Desempenho
Existe outra forma através da qual possamos ler dados para um buffer de memória mutável ?
Sim podemos usar o método readinto() de ficheiro de um objecto.
- O
readinto()
método de ficheiros pode ser usado para preencher qualquer matriz pré-alocada com dados. Incluindo matrizes criadas através do módulo numérico. - Unlike normal
read()
método oreadinto()
método preenche o conteúdo de um buffer existente em vez de atribuir novos objectos e devolvê-los. - Assim, podemos utilizá-lo para evitar fazer atribuições de memória extra.
Exemplos:
Você quer ler dados binários directamente para um buffer mutável sem qualquer cópia intermédia para manipular os dados binários