Pythonでファイルを開くモード一覧|r・w・a・xなどの違いと使い方を解説
Pythonでは open() 関数を使ってファイルを開きますが、その際に用途に応じた「モード」を指定できます。本記事では、Pythonで利用できるファイルオープンモードの種類とそれぞれの動作、実際のコード例をわかりやすく解説します。
Pythonのファイルオープンモード一覧
| モード | 説明 |
|---|---|
'r' | 読み取りモード(デフォルト)。ファイルが存在しない場合はエラーになる。 |
'w' | 書き込みモード。ファイルが存在しなければ新規作成し、存在する場合は中身を空にしてから書き込む。 |
'x' | 排他的作成モード。新規ファイルを作成して開くが、同名ファイルが既に存在する場合はエラー(FileExistsError)になる。 |
'a' | 追記モード。既存の内容を壊さずにファイル末尾へ追記する。ファイルが存在しない場合は新規作成される。 |
't' | テキストモード(デフォルト)。文字列(str)として読み書きする。 |
'b' | バイナリモード。画像や音声などのバイナリデータを bytes 型として扱う。 |
'+' | 更新モード。読み取りと書き込みの両方が可能になる。 |
モードの組み合わせ方と指定方法
これらのモードは単独でも、複数を組み合わせて使うこともできます。モードは open() 関数の第2引数として文字列で渡します。モードを省略した場合は、読み取り専用のテキストモード('rt')として扱われる点に注意してください。
たとえば「バイナリモードで読み書き両方を行いたい」場合は、'r+b' のように組み合わせて指定します。
コード例
f = open("test.txt") # 'rt' を指定したのと同じ(デフォルト)
f = open("test.txt", 'w') # テキストモードで書き込み
f = open("test.bmp", 'r+b') # バイナリモードで読み書き
f = open("test.txt", 'a') # 追記モード
補足:エンコーディングの指定
テキストモードでファイルを開くときは、encoding 引数で文字コードを明示しておくと安全です。OSによってデフォルトのエンコーディングが異なるため、特に日本語を扱う場合は文字化けを防ぐために次のように指定しましょう。
f = open("test.txt", mode='r', encoding='utf-8')
補足:with文の活用
ファイルを開いた後は必ず閉じる必要があります。close() の呼び忘れはリソースリークの原因になるため、実務では with 文を使って処理終了後に自動的にクローズするのが一般的です。
with open("test.txt", mode='r', encoding='utf-8') as f:
text = f.read()
-
Pythonモジュールを整理するためのベストプラクティスとは?プロジェクト構成の基本を解説
Pythonモジュールの整理に悩んだら、まずは定番の構成からPythonでライブラリやモジュールを開発する際、「どのようにファイルやディレクトリを配置すればよいのか」と迷うことは多いものです。実は、Pythonコミュニティでは広く参照されている優れたサンプルプロジェクトが存在します。それが、Kenneth Reitz氏(Requestsライブラリの作者として知られています)が公開している samplemod です。このプロジェクトは「sample」というモジュールを作成する例であり、Pythonプロジェクトの標準的な構成を学ぶのに最適な教材となっています。推奨されるディレクトリ構成README
-
Pythonのパッケージとは?モジュールとの違いをわかりやすく解説
Pythonにおける「パッケージ」を正しく理解するには、まず「モジュール」について知っておく必要があります。この記事では、モジュールとパッケージの基本概念、両者の違い、そして実際のインポート時の挙動について、具体例を交えながらわかりやすく解説します。 モジュールとは何か Pythonでは、任意の .py ファイルが1つのモジュールとして扱われます。モジュール名は、ファイル名から拡張子「.py」を除いたもの、すなわちそのモジュールの __name__ 属性に相当する名前になります。たとえば sample.py というファイルは、「sample」という名前のモジュールです。 パッケージとは何か