No todos los archivos son archivos de texto, y por lo tanto no todos los archivos pueden ser procesados por líneas. Existen archivos en los que cada byte tiene un significado particular, y es necesario manipularlos conociendo el formato en que están los datos para poder procesar esa información.
Para abrir un archivo y manejarlo de forma binaria es necesario
agregarle una b
al parámetro de modo.
Para procesar el archivo de a bytes en lugar de líneas, se utiliza la
función contenido = archivo.read(n)
para leer n
bytes y
archivo.write(contenido)
, para escribir contenido en la posición
actual del archivo.
Nota La b
en el modo de apertura viene de binario, por el sistema de numeración binaria, ya que en el procesador de la computadora la información es manejada únicamente mediante ceros o unos (bits) que conforman números binarios.
Si bien no es necesaria en todos los sistemas (en general el mismo sistema detecta que es un archivo binario sin que se lo pidamos), es una buena costumbre usarla, por más que sirva principalmente como documentación.
Al manejar un archivo binario, es necesario poder conocer la posición
actual en el archivo y poder modificarla. Para obtener la posición
actual se utiliza archivo.tell()
, que indica la cantidad de bytes
desde el comienzo del archivo.
Para modificar la posición actual se utiliza archivo.seek(inicio, desde)
, que permite desplazarse una cantidad inicio
de bytes en el archivo,
contando desde
el comienzo del archivo, desde
la posición actual o
desde
el final.