【Python】バイナリファイルを読み書きモードで開く方法(w+b・r+bの使い分け)
バイナリ読み書きモードでファイルを開く基本
Pythonでバイナリファイルを読み取り・書き込みの両方のモードで開くには、open()関数の第2引数(mode)に 'w+b' を指定します。「w」は書き込み(write)、「b」はバイナリ(binary)を意味します。
f = open('my_file.mp3', 'w+b')
file_content = f.read()
f.write(b'Hello')
f.close()
このコードでは、my_file.mp3 をバイナリの読み書きモードで開き、ファイルの内容を変数 file_content に格納した後、ファイルに「Hello」というバイト列を書き込んでいます。最後に close() メソッドでファイルを閉じることで、変更が確定しリソースも解放されます。
'w+b' と 'r+b' の違いに注意
'w+b' で既存のファイルを開くと、オープン時点でファイルの中身が切り詰められ(空になります)。そのため、上記の例のように open 直後に read() を実行しても、実際には空のバイト列 b'' が返される点に注意が必要です。
既存の内容を保持したまま読み書きを行いたい場合は、'r+b'(読み書き両用・切り詰めなし)を使用します。テキストモードの 'r+' に相当するバイナリ版です。
# 既存の内容を壊さずに読み書きする場合
with open('my_file.mp3', 'r+b') as f:
data = f.read() # 現在の内容を読み取る
f.seek(0) # 書き込み位置を先頭に戻す
f.write(b'Hello')
with文を使うとより安全
ファイル操作では、with 文(コンテキストマネージャ)を使うのが推奨されます。ブロックを抜けると自動的にファイルがクローズされるため、close() の呼び忘れによるリソースリークやデータ未保存のトラブルを防げます。
with open('my_file.mp3', 'w+b') as f:
f.write(b'Hello')
まとめ
- バイナリの読み書きモードで新規作成・上書きするなら 'w+b'(既存内容は消える)
- 既存内容を残したまま読み書きするなら 'r+b'
- ファイルは必ず
close()するか、with文で管理する
-
PythonのaifcモジュールでAIFF・AIFCファイルを読み書きする方法
Python標準ライブラリのaifcモジュールは、AIFF(Audio Interchange File Format)およびAIFF-Cファイルの読み書きをサポートするさまざまな関数を提供しています。AIFF形式はデジタル音声サンプルをファイルに保存するためのフォーマットで、その後継であるAIFF-Cでは音声データの圧縮が可能になっています。なお、aifcモジュールはPython 3.11で非推奨となり、Python 3.13で削除されました。古いバージョンを使用している場合や、互換性のために既存コードを理解する必要がある場合に役立つ知識です。オーディオファイルのパラメータオーディオファイル
-
PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins