Binary file handling in Python allows you to work with non-text files, such as images, audio files, and other file formats that contain binary data. Unlike text files, binary files store data in a format that is not human-readable. Python provides built-in functions and methods to read from, write to, and manipulate binary files.
To open a binary file in Python, use the open() function with the 'b' mode.
Syntax:
file_object = open(file_name, mode)
Common Modes:
Example:
# Open a file for reading in binary mode
file = open('example.bin', 'rb')
# Open a file for writing in binary mode
file = open('example.bin', 'wb')
# Open a file for appending in binary mode
file = open('example.bin', 'ab')
# Open a file for reading and writing in binary mode
file = open('example.bin', 'r+b')
There are several ways to read from a binary file in Python:
2.1 read()
Reads the entire file as a bytes object.
Example:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
2.2 read(size)
Reads size bytes from the file.
Example:
file = open('example.bin', 'rb')
content = file.read(10) # Read the first 10 bytes
print(content)
file.close()
2.3 readline()
Reads one line from the file. Binary files may not have lines, so this is less commonly used.
Example:
file = open('example.bin', 'rb')
line = file.readline()
print(line)
file.close()
2.4 readlines()
Reads all lines and returns them as a list of bytes objects. Again, this is less commonly used for binary files.
Example:
file = open('example.bin', 'rb')
lines = file.readlines()
for line in lines:
print(line)
file.close()
You can write to a binary file using the write() and writelines() methods.
3.1 write()
Writes bytes to the file.
Example:
file = open('example.bin', 'wb')
file.write(b'\x00\x01\x02\x03\x04')
file.close()
3.2 writelines()
Writes a list of bytes objects to the file.
Example:
file = open('example.bin', 'wb')
lines = [b'\x00\x01\x02\x03\x04', b'\x05\x06\x07\x08\x09']
file.writelines(lines)
file.close()
Appending data to an existing file can be done using the append mode 'ab'.
Example:
file = open('example.bin', 'ab')
file.write(b'\x0A\x0B\x0C\x0D\x0E')
file.close()
Using the with statement for file handling ensures that the file is properly closed after its suite finishes, even if an exception is raised.
Example:
# Reading with `with` statement
with open('example.bin', 'rb') as file:
content = file.read()
print(content)
# Writing with `with` statement
with open('example.bin', 'wb') as file:
file.write(b'\x00\x01\x02\x03\x04')
# Appending with `with` statement
with open('example.bin', 'ab') as file:
file.write(b'\x0A\x0B\x0C\x0D\x0E')