テキストの画面への入出力は画面に出るものを操作するだけなので簡単かつ、あまりバグや不具合などと遭遇しないので、メモ書き程度に他エントリにまとめておきます。
さて、ここでは自分のやりたいこととしての第一歩、ファイル操作の初歩として、テキストデータの処理をピックアップします。
ファイルを開くにはopen関数を使います。指定するものはファイルパスとファイルの読み込みモード、日本語などを扱うファイルならエンコードをUTF8に指定すると文字化けを防げます。
open("ファイルパス", "ファイル読み込みモード" , encoding="utf-8")
特に何も指定しなければ相対パスによって、実行したpythonファイルと同じフォルダのものを読み込むはずです。他の場所にある特定のファイルを読み込ませたい場合は絶対パスを記入しましょう。
ファイルの読み込みモードは大きく分けて3つ、厳密に分けると細かい差はありますが、下の3種に大別されます。
- 読み込み (r, r+)
- 上書き (w, w+)
- 追記 (a, a+)
本項目では単純な読み書きについて触れるだけなので、基本的な機能を持つモードのみを紹介します。
テキストデータの読み込み
実際にファイルを読み込んでみましょう。
f = open("open.txt", "r" , encoding="utf-8")
f.readlines()
これで変数fにopen.txtの中身が読み込まれました。ファイルの読み込みモードは「r」で、読み込みだけを行うモードです。
fの中身がこのままだと見えないので、出力としてreadlines()関数を用いました。read()だと1文で改行などもせずすべての内容を読み込みますが、readlines()だと1行ごとのまとまりでリスト化して出力します。行数や文字数を指定しないと全行読み込むので、大きいファイルの場合は注意しましょう。
テキストデータのファイル出力
テキストをファイルに出力するためには
f = open("write.txt", "w", encoding="utf-8")
print("with構文を使わない場合", file=f)
print("close()を忘れないように",file=f)
f.close()
write.txtというファイルを開きます。このファイルが存在しない場合は新規のファイルを作成します。print()関数には実行画面に出力する以外に、ファイルに対して出力するための引数を入れることもできます。それを使ってファイルに書き込んでいくことができます。
また、プログラム中で読み込むファイル数には限りがあることと、複数のファイルを扱う場合には何らかのミスによって取り違えが起こる可能性もあるので、処理が終わったファイルにはclose()関数を使って、ファイルを使い終わりましたという宣言を忘れないようにしておきましょう。
既にあるファイルへ追加する
先ほど書き込んだファイルをそのまま使います。モードを「a」の追加モードで読み込んで、そのファイルを読み込んだ変数に直接writeで書き込むことができます。
with open("write.txt", "a", encoding="utf-8") as f:
f.write("with構文を使う場合")
f.write("ファイル仕様処理が終わったら自動でcloseしてくれます")
先ほどまでのopen()~close()一連の同じ意味を持つのがこのwith構文です。閉じることを忘れやすいので、ファイルを扱う時はこの形式で、という認識を持っておくとミスを防ぎやすいでしょう。
実行結果
テキストデータをそのまま読み込む場合、最後の行以外は改行コードの「\n」が入ります。またエンコードを指定しない場合、日本語データは文字化けをしているので、指定をすると文字化けが無くなっています。
withを使った場合の実行結果が使わない場合と同じなので、基本的にこちらを使うとクローズし忘れなどのミスを防げるでしょう。
応用
例えばデータベースから特定のデータを検索し、結果をファイルに書き出したり、テキストベースだったものを体裁を整えて別の形式で出力するなど。これらの応用は後のエントリで実際にやってみます。
コメント
[…] […]