1.1 ファイルを開く
Pythonでファイルを扱うのはとても楽しいよ。なんていうか、簡単で直感的だからね。 ここではファイルの作成やディスク上での移動ではなく、ファイルの内容の読み込みと書き込みについて話しているんだ。
ファイルの内容を扱う基本的な流れはこんな感じだよ:
ファイルを開く
ファイルデータを操作する
ファイルを閉じる
ファイルの全内容を読む例を見てみよう:
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
open
関数 はファイルを開くために使うんだ。これには2つの主な引数があるんだ:
ファイル名とアクセスモード。この関数は、読み書きの操作に使うための
ファイルオブジェクト
を返すよ。
例:
file = open('example.txt', 'r')
ファイル名だけ指定した場合は、プログラムのカレントディレクトリで探すことになるよ。 フルパスを指定した場合は、その指定されたパスを使う。
1.2 アクセスモード
open()
関数の第2引数はファイルの動作モードを示すよ。アクセスモードは、
ファイルでどんな操作を行えるか(読み、書きなど)を決定するんだ。
主なアクセスモードは以下の通りだよ:
Read
— 読み取り。Write
— 書き込み。Append
— 追加。
これらのモードにはいくつかのバリエーションがあるよ:
- 'r': 読み込み用にファイルを開く(デフォルトモード)。ファイルは存在している必要がある。
- 'w': 書き込み用にファイルを開く。ファイルの内容は削除される。ファイルが存在しない場合は作成される。
- 'a': 追加用にファイルを開く。データはファイルの末尾に追加される。ファイルが存在しない場合は作成される。
- 'r+': 読み書き用にファイルを開く。ファイルは存在している必要がある。
- 'w+': 読み書き用にファイルを開く。ファイルの内容は削除される。ファイルが存在しない場合は作成される。
- 'a+': 読み込みと追加用にファイルを開く。データはファイルの末尾に追加される。ファイルが存在しない場合は作成される。
ファイルへの書き込み例:
データをファイルに書き込みたい場合は、ファイルを開くときにアクセ
スモードとしてw
を指定するだけだよ。注意してね、ファイルの古い内容は全て削除されるよ!
file = open('example.txt', 'w')
file.write("Hello, World!")
file.close()
ファイルへの追加の例:
ファイルの内容を削除せずに、末尾に何かを追加したい場合は、
アクセスモードとしてa
を指定する必要があるよ。
file = open('example.txt', 'a')
file.write("\nAppended text.")
file.close()
重要!
ファイルに書き込んでいるとき、そのファイルがまだ存在しない場合は、自動的に作成されるよ。でも、存在しないファイルからデータを読み込もうとすると、例外が発生するよ。
1.3 ファイルの閉じ方
ファイルを開くたびに、OSはそのファイルへのアクセス権をチェックして、プログラムで使用中としてマークするよ。ファイルを操作するためには特別なリソース、すなわちハンドラが割り当てられるんだ。
プログラムが取得できるハンドラの数には制限があるんだ。つまり、同時に数百のファイルを開いておくことだけができるってことだよ。 多いように思えるけど、プログラムがサーバーで何ヶ月も稼働していると、毎日何かをファイルから読み出したり書き込んだりしていると、その制限にすぐに達してしまうかもしれない。
だから、ファイルの操作が終わったら、そのファイルを閉じる必要があるんだ。
close()
メソッドを呼び出すことで、OSにこれ以上このファイルは必要ないと知らせることができて、そのハンドラも不要だと伝えられるんだ。
ファイルの閉じ方
ファイル操作が終わったら、システムリソースを解放するために、そのファイルを閉じる必要があるよ。
これには、close()
メソッドを使用するんだ。
file = open('example.txt', 'r')
# ファイルでの操作を実行する
file.close()
読み取りまたは書き込み用に開いたすべてのファイルは閉じられるべきだよ。
close()
メソッドを呼び出すことを忘れないでね。
GO TO FULL VERSION