11.ファイル操作 (2015.3.22-2021.5.29)

ファイルの読み書きは、コンピューターを扱う上で最も重要な操作の1つです。Pythonではwith文(開いたファイルを自動的に閉じる機能を持つ)を一般的に使用するようです。途中からサポートされたらしく、検索してもあまり解説がヒットしません。案外close処理は忘れそうなので、自動で行ってくれるなら使うべきでしょう。使い方は下記の通りです。引数1にはファイル名、引数2には読み書きのモードを指定します。1度に複数のファイルを扱えます。

with open(引数1, 引数2,・・・) as 変数名:
 処理A
 処理B

処理の前には必ずインデントが必要になります。また、オブジェクトの後に:(コロン)を付けることを忘れてはいけません。

ファイルを指定する方法は、絶対パスと相対パスの2つがあるので、適宜使い分ければ良いと思います。絶対パスはルートディレクトリからの道筋を全て記述する必要があり、バックスラッシュで各ディレクトリをつないでいき、最後が指定ファイルとなります。参考までに、Windowsではパスに半角の¥が使われます。意味は同じなので覚えておくと良いでしょう。相対パスは基準となるディレクトリ(プログラムのあるディレクトリ)をピリオドで表し、そこを基点として指定したファイルまでの道筋を記述します。例えばmyfile.txtというファイルがあるとして、プログラムと同じディレクトリなら./myfile.txt、1つ下の階層は./ディレクトリ名/myfile.txt、1つ上の階層は../myfile.txtと言った具合です。

次に実際の読み書きのサンプルを記します。最初に書き込むべきファイルが存在するかどうか調べ、無ければ新たに作成します。作成時には「INPUT DATA」を書き込んで改行(エスケープシーケンス文字)します。既に存在するか新たに作成した後は、追加モードでファイルを開いて改行し、ループ変数として定義した i の値を書き込みます。ループの度に i は1足されて、5回繰り返したら書き込みを終了します。前述したようにwith文を使うとファイルは自動的に閉じられるので便利です。

 

書き込みが終わったら、ファイルを読み出して1行ずつ表示してみます。ついでに実際にできたファイルの中身がどうなっているか確かめてみましょう。ファイルはdata.txtの名の普通のテキストファイルです。開くと下記の内容になっていることがわかります。サンプルプログラムを再度実行すると、既にファイルが作られているため、1~5の数値書き込みが前の内容の後ろに追加されることになります。あくまでappend(追記)なので、前のファイルの中身が全て上書きされるわけでは無いことに注意して下さい。

 

ファイル操作はこの先頻繁に使うことになると思います。例えばセンサー等からデータを取得し、それをファイルに保存することで、後から分析したりすることができます。また、カメラを使って映像を撮影し、それを保存すれば防犯にも役立ちます。OSは元々ファイル操作が基本のようなところがあり、コンピューターを扱う上で重要な操作であることは言うまでもありません。個人的にもまだ十分理解しているとは言いがたいので、実際の応用段階で知識を深めたいと考えています。