5.1 バイナリデータ
Pythonでのバイナリファイルの操作は、テキストファイルの操作とは少し違うんだ。バイナリファイルは人間が読み取るためのフォーマットじゃなくて、データをバイト単位で扱うからね。
バイナリファイルを扱うためには、open()
関数を使ってモード指定するんだけど、その時に'b'
を含めるんだ(例えば、読み込みは'rb'
、書き込みは'wb'
とか)。
バイナリファイルを開く例:
- 読み込み:
'rb'
- 書き込み:
'wb'
- 追加:
'ab'
- 読んで書く:
'r+b'
,'w+b'
,'a+b'
例:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
変数'content'
にはバイトの配列が入るよ。
バイナリデータ(バイト)はデータの最も低い、基本的なレベル。どんなデータもバイナリとして読み取ることができる。
テキストファイルはいつでもバイナリとして読むことができるけど、すべてのバイナリファイルがテキストとして解釈できるわけではないんだ。
5.2 バイナリファイルを読む
ファイルの全内容を読む
メソッドread()
はファイルの全内容をバイトで読むよ。
例:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
特定のバイト数を読む
メソッドread(n)
はファイルからn
バイトを読むよ。
例:
file = open('example.bin', 'rb')
content = file.read(10) # 最初の10バイトを読む
print(content)
file.close()
1行ずつ読む
メソッドreadline()
はファイルから1行を読むんだ。バイナリファイルの場合、行は改行文字(\n)
で終わるよ。
例:
file = open('example.bin', 'rb')
line = file.readline()
print(line)
file.close()
すべての行を読む
メソッドreadlines()
はファイルのすべての行を読み取って、バイトのリストとして返すよ。
例:
file = open('example.bin', 'rb')
lines = file.readlines()
for line in lines:
print(line)
file.close()
文字列操作のメソッドは、テキストを含まないファイルを読むときに正しく動かないかもね。例えば、アーカイブや画像、ビデオとか。
5.3 バイナリデータを書く
メソッドwrite()
はファイルにバイトを書き込むよ。書き込むデータはバイト(bytes)
でなきゃならないんだ。
画像の読み込みと書き込み
ファイルから画像を読み込み、別のファイルに書き込む。
# 画像を読む
with open('input_image.jpg', 'rb') as infile:
image_data = infile.read()
# 画像を書く
with open('output_image.jpg', 'wb') as outfile:
outfile.write(image_data)
テキストデータも書き込めるよ:
例:
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