こんにちは、うしまるです。
今日もPythonの勉強を一緒にしていきましょう!
今日のテーマは、「Pythonを読み込む方法について」です。
では、さっそくみていきましょう!
ファイルを読み込むとは?
プログラミングの中でわりと頻繁に出会うのが、ファイルの入出力。とくにファイルの読み込みは、ソフトウェアのベース設定情報や、処理したいデータの読み込みなどの場面で様々なデータを読み込む場合があります。
Pythonでアプリケーションを開発する場合にも使う事例が多くなってくると思いますのでしっかりマスターしておきたいですね。
Pythonでファイルを読み込んでみよう!
Pythonでファイルを読み込むには、予め用意されているopenメソッドの引数にモードを指定することで開くことができるようになります。
書き込みでもopenメソッドを使用します。合わせて確認してみてください。
まずはモードの種類をみてみましょう!
- mode = ‘r’ … 読み込み用にファイルを開く
- mode = ‘b’ … バイナリモードで開く
- mode = ‘t’ … テキストモードで開く
- mode = ’+’ … 更新用に開く
modeの違いについて知ろう
読み込み用にファイルを開くmode = ‘r’
ファイルの読み込み時にベースとして使用するmodeになります。具体的にはopenメソッドの第2引数に”r”と設定することでファイルを読み込むことができます。
ちなみに。このmodeですが、組み合わせて使うことができ、’r’と’t’を組み合わせた”rt”とこの”r”が実は同じ意味になります。
また、省略することもできます。
バイナリモードでファイルを開く mode = ‘b’
ファイルをバイナリモードで開きたい時に使用するmodeになります。こちらも同様にopenメソッドの第2引数に”rb”と設定することでファイルをバイナリモードで開くことができます。
テキストモードでファイルを開く mode = ‘t’
ファイルをテキストモードで開きたい時に使用するmodeになります。このモードは読み込み時のデフォルト設定になっているため、使う機会は少ないかもしれません。
明示的にmodeを表現したい時に使うと良いでしょう。
使うときは”rt”となります。
更新用にファイルを開く mode = ‘+’
このモードは、書き込みを前提とした読み込みとなります。最終的にファイルの先頭や途中に挿入保存したいときに’r+’として開きます。
メソッドopenの基本形を知ろう!
ファイルを開く時に使用するopenメソッドの基本形についてみていきましょう!
IO型変数 = open(“読み込みファイルパス“)
また、open関数で開いたファイルを設定する変数IO型は処理を終了するときには必ずcloseメソッドを設定してあげる必要があります。
IO型変数.close()
では、実際にVSCodeを使用してファイルを読み込んでみましょう!
inputfile1 = open("test.txt") print(inputfile1.read()) inputfile1.close()
Pythonのプログラムを保存している箇所と同じフォルダ階層に”test.txt”というファイルを予め保存しておきました。
openメソッドを使用し、ファイルを開きます。開いたファイルの情報は変数inputfile1へ、IOデータ型として保存されます。
ファイルの中身を一括取得したい場合は、readメソッドを使用することで読み出すことができます。
読み込みが完了したあとは、closeメソッドを使用してファイルを閉じましょう!
withを使って閉じ忘れ防止
Pythonには、with構文というものがあり、今回のファイルの読み出し時に使用すると、忘れがちなcloseメソッドを記載しなくても裏でやってくれる便利な構文です。
with open(“読み込みファイルパス“) as IOデータ型変数:
with構文内の処理~
with構文を使ってファイルを扱うときはタブでインデントして処理を記載します。
インデントを抜けるとcloseメソッドを使用しなくても設定したIOデータ型変数がファイルを閉じる処理を実行してくれます。
with open("text.txt") as inputfile1: print(inputfile1.read())
withを使用したパターンを実行してみました。
処理自体は一つ前と同じですが、だいぶシンプルになりましたね。
openメソッド+α
openメソッドには引数を設定することができます。代表的なものとして、modeとencodeについてご紹介します。
IO型変数 = open(“読み込みファイルパス“, mode, buffering, encoding, errors, newlines, closefd, opener)
色々と引数を追加することができますが、特に気にしない場合は省略も可能です。ただしこの順番だけは守るようにしましょう。
mode
modeは、オプションの文字列で、ファイルが開かれる時のモードを指定することができます。設定内容は、前の章「modeの違いについて知ろう」で確認ください。
buffering
bufferingは、オプションの整数を設定します。バッファリングの方針を設定するために使用します。
- 0 … バッファリングを無効にする。(バイナリモードでのみ有効)
- 1 … 行単位バッファリングを実行する。(テキストモードでのみ有効)
- 1以上 …固定値のチャンクバッファの大きさをバイト単位で指定
このオプションが設定されていない場合はデフォルトのバッファリング方針に沿って動作するようになります。
- バイナリファイルは固定サイズのチャンクでバッファリングされる
- 対話的なテキストファイルは、行バッファリングを使用
※チャンクとは、一定サイズのデータを格納する箱みたいなものです
※バッファとは、一時的にデータを保持しておく場所みたいなものです
encoding
encodingは、ファイルのエンコードやデコードで使われるテキストエンコードの名前を設定することで、読み込みファイルを正しく扱うことができます。
ここを失敗してしまうと文字化けしてしまいます。
テキストモードのみで使用するようにしてください。
errors
errorsは、オプションの文字列で、エンコードやデコード時のエラーをどのように扱うのか指定することができます。
テキストモードでのみ設定することができます。
newline
読み込んだテキストの改行コードとして何を認識させるかを設定できる項目です。各OSで作成されるテキストファイルは、改行コードが異なっていることがあります。
例えばWindowsのデフォルト改行コードは”\r\n”ですが、Linuxでは”\n”がデフォルトの改行コードだったりします。
このことで、Windowsで作成したファイルをLinuxで開くと、改行ができていなかったり、場合によっては文字化けしたりしてしまいます。
- None … ユニバーサル改行モード有効(呼び出し元に必ず’\n’を返却)
- ‘ ‘ … ユニバーサル改行モード有効(呼び出し元にはそのまま改行コードを返却)
- ‘\n’, ‘\r’, ‘\r\n’ … それぞれを改行コードとして扱う
closefd
- True … デフォルト(特に何もしない)
- False … ファイルを開いたままにする(ファイル記述子で開いた時のみ)
ファイルを、ファイル名で開いたときは必ずTrueを設定するか、未設定にする必要があります。
Falseにしてファイルを開いたままにするには、ファイル記述子で開いた時のみ設定できるオプションになります。
ファイル記述子とは、現在実行しているプロセスで開かれたファイルのID番号みたいなものです。Falseを使用することで、そのファイルを開いたままにしておくことができます。
opener
- None … デフォルト(特に何もしない)
- opener … カスタムオープナー
ファイルを開く時に、呼び出すメソッドopenerを使用することができます。
別途メソッドopenerを作成し、処理を実装します。
まとめ
今回は、Pythonにおけるファイルの読み込みについて解説しました。
今日のポイント!
- Pythonでファイルを開くときはopenメソッドを使用する
- openメソッドを使用するときはwith構文を使用するのがおすすめ!
- ファイルの使用方法に合わせてオプションを使いこなそう!
ファイルの書き込み方法は下の記事で解説していますので合わせて確認してみてください。
他にも初心者の方向けにPythonの基本的な書き方についてまとめていますのでぜひ確認してみてください。
より詳しくPythonを学びたい方はこちらの本もおすすめです。興味のある方はぜひ手にとって見てください。
ランキングにも参加していますのでもしこの記事が役に立ったと思っていただいた方はポチッとしてもらえると励みになります。