Pythonのopen()関数におけるモード(引数)の略語をわかりやすく解説!
こんにちは。ゆうせいです。
今回は、Pythonでファイルを読み書きする際によく使われる open() 関数について、新人エンジニア向けに丁寧に解説していきますね。
特に「rって何?」「wbとかって何が違うの?」という疑問を持っている方に向けて、引数の略語の意味をわかりやすく説明していきます!
Pythonの open() 関数とは?
Pythonでファイルを扱うには open() 関数を使います。
f = open("example.txt", "r")
この例では、「example.txt」というファイルを "r" モードで開いています。
でもこの "r" って、一体何なのでしょう?
ファイルを開くモードの略語一覧
以下の表に、open() 関数のモード(=第2引数)の略語と意味をまとめました。
| モード | 読み方 | 意味 |
|---|---|---|
'r' | read | 読み込み専用(既存ファイル) |
'w' | write | 書き込み専用(内容を全消去) |
'a' | append | 追記専用(内容を追加) |
'b' | binary | バイナリモード(画像や音声ファイル用) |
't' | text | テキストモード(文字ファイル、デフォルト) |
'x' | exclusive create | 新規作成(すでに存在していたらエラー) |
'+' | update | 読み書き両方可能にするオプション |
モードの組み合わせ例
モードは組み合わせて使うことができます。いくつか代表的な例を見てみましょう。
| モード | 説明 |
|---|---|
'rb' | バイナリファイルの読み込み(例:画像) |
'wb' | バイナリファイルの書き込み(例:音声データ保存) |
'r+' | 読み書き両方可能、ファイル内容は保持 |
'w+' | 読み書き両方可能、ファイル内容は削除される |
'a+' | 読み書き両方可能、追記モードで書く |
それぞれのモードの使い分け方
'r':読み込み専用モード
既に存在するファイルを読むだけのときに使います。
例えるなら、図書館の本を読むイメージです。中身を書き換えることはできません。
注意:ファイルが存在しないとエラーになります!
'w':書き込み専用モード
ファイルを書き込むけれど、中身は全部消されてしまうのがこのモード。
たとえるなら、真っ白なノートに書き始める感じ。
既存の内容が必要な場合は要注意です!
'a':追記モード
ファイルの最後にデータを追加したいときに使います。
たとえば、ログファイルのように、既存の記録を残しながら新しい記録を加えたいときに便利。
'b':バイナリモード
バイナリファイルとは、画像・音声・動画など「非テキストデータ」です。
これを扱うときは 'b' を使います。
例:'rb' で画像ファイルを読み込む。
't':テキストモード
デフォルトなので省略してもOK。普通のテキストファイルを扱うときはこちらを使います。
例:open("memo.txt", "r") は open("memo.txt", "rt") と同じ意味です。
'x':新規作成モード
ファイルが存在していないことを前提に新しく作るモード。
既に存在しているとエラーになります。重要なデータを上書きしないように使いたいときに有効です。
'+':更新モード(読み書き両方)
読みも書きもしたいなら '+' を追加しましょう。
ただし、このときの書き込み動作は r、w、a のどれと組み合わせるかによって異なります。
例:
'r+'→ 中身は消さずに読み書きOK'w+'→ 中身は消してから読み書きOK'a+'→ 中身を消さず、追記しながら読みもできる
図で理解する:各モードのイメージ図
既存ファイル: [abcde]
モード 操作結果(内容)
-----------------------------
'r' 読むだけ → [abcde]
'w' 全消去して書く → []
'a' 書き足す → [abcde + 新規内容]
'r+' 読み書き(内容保持)→ 編集可
'w+' 読み書き(内容全消去)→ []
'a+' 読み書き(追記)→ [abcde + 新規内容]
よくあるエラーと注意点
'r'モードでファイルが存在しないとFileNotFoundErrorが出ます'w'モードは既存のファイルを上書きしてしまうため、慎重に!'rb'や'wb'では、文字列ではなくbytes型でデータを扱います
実際に使ってみよう!
例:画像ファイルを読み込む
with open("photo.jpg", "rb") as img:
data = img.read()
例:ログファイルに追記
with open("log.txt", "a") as log:
log.write("処理が完了しました\n")
まとめ
ファイルモードの引数は、たった一文字で大きく動作が変わる重要なパラメータです。
略語ばかりで最初はわかりにくいですが、一つ一つの意味を理解すると一気にスムーズになりますよ!
セイ・コンサルティング・グループでは、新人エンジニアの方がPythonプログラムを写経できるタイピングゲームを無償公開中です。
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年11月25日E検定対策!Pythonで学ぶ「情報理論」入門:エントロピーからKLダイバージェンスまで徹底解説
山崎講師2025年11月24日エンジニアこそ知っておきたい!「ビジネスマナー」が最強のコスパ戦略である理由
山崎講師2025年11月24日つながりの質を変えろ!「ネットワーク理論」で目指すプロデューサー型キャリア
山崎講師2025年11月24日天才に勝つ必要なし!「比較優位」で見つけるあなたの生存戦略