5.1 Dati binari
Lavorare con file binari in Python è un po' diverso rispetto ai file di testo, poiché i file binari contengono dati in un formato non destinato alla lettura umana. Invece delle stringhe, i file binari lavorano con i byte.
Per lavorare con file binari si usa la funzione open() specificando una modalità che contiene la lettera 'b' (per esempio, 'rb' per la lettura, 'wb' per la scrittura e così via).
Esempi di apertura di file binari:
- Lettura:
'rb' - Scrittura:
'wb' - Aggiunta:
'ab' - Lettura e scrittura:
'r+b','w+b','a+b'
Esempio:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
La variabile 'content' conterrà un array di byte.
I dati binari (byte) sono il livello più basso e più base di rappresentazione dei dati. Qualsiasi dato può essere letto come binario.
Ciò significa che un file di testo può sempre essere letto come binario, ma non tutti i file binari possono essere interpretati come testo.
5.2 Lettura di file binari
Lettura di tutto il contenuto del file
Il metodo read() legge tutto il contenuto del file in byte.
Esempio:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
Lettura di un numero specifico di byte
Il metodo read(n) legge n byte dal file.
Esempio:
file = open('example.bin', 'rb')
content = file.read(10) # Legge i primi 10 byte
print(content)
file.close()
Lettura per riga
Il metodo readline() legge una riga dal file. Nel caso dei file binari la riga termina con il carattere di nuova linea (\n).
Esempio:
file = open('example.bin', 'rb')
line = file.readline()
print(line)
file.close()
Lettura di tutte le righe
Il metodo readlines() legge tutte le righe dal file e le restituisce come lista di byte.
Esempio:
file = open('example.bin', 'rb')
lines = file.readlines()
for line in lines:
print(line)
file.close()
I metodi per lavorare con le stringhe potrebbero non funzionare correttamente se si legge un file che non contiene testo: per esempio, un archivio, un'immagine o un video.
5.3 Scrittura di dati binari
Il metodo write() scrive byte in un file. I dati da scrivere devono essere sotto forma di byte (bytes).
Lettura e scrittura di immagini
Lettura di un'immagine da un file e scrittura in un altro file.
# Lettura dell'immagine
with open('input_image.jpg', 'rb') as infile:
image_data = infile.read()
# Scrittura dell'immagine
with open('output_image.jpg', 'wb') as outfile:
outfile.write(image_data)
È anche possibile scrivere dati testuali:
Esempio:
data = b"Hello, World!"
lines = [b"First line.\n", b"Second line.\n", b"Third line.\n"]
file = open('example.bin', 'wb')
file.write(data)
file.writelines(lines)
file.close()
GO TO FULL VERSION