Python 3でテキストファイルを読み込む
さて、前回まででPythonを実行する基礎的な環境が整い、Hello world!もプリントし終えたので、よくある入門コンテンツならおそらくここから以下のような要素に取り組むことでしょう。
文・式,コメント,インデント,変数,定数, 演算子,制御構文,エンコードルール,関数,コンテナ,文字列操作,ループ,モジュール,ファイル……
退屈。圧倒的退屈です。
最終的に私がやりたいことは、自分が書いた原稿ファイルをよろしく処理したり(具体的には曖昧)、保存してあるアイデアメモなどをよろしく処理したりすることなので(こちらも具体的には曖昧)、逆にいえばその機能部分さえわかればOKです。ちまちま全体像など勉強していられません(横暴)。
必要になれば、その時点で知識はインポートしてくればいいわけで、まずは自分が目指している機能に必要なものから覚えていきましょう。
よろしい、ならば実装だ!
というわけで、テキストファイルの扱い方を学びます。
上から読んでいくと「ファイル全体をリストとして読み込み: readlines()」というのが使えそうです。いっちょ試してみましょう。
まず、読み込むためのテキストファイルを作成しておきます。中身はなんでもOKです。
で、そのテキストファイルを、これから実行するpythonのファイルと同じフォルダに入れておきます。
別の場所に保存してあっても構わないはずですが、どう考えても面倒なので、とりあえずはこれで。
で、いよいよPythonのコードです。といっても、ほぼ上のページからのコピペでいきます。
path = 'test.txt'
with open(path) as f:
l = f.readlines()
print(type(l))
print(l)
まず、一行目で読み込むファイルの場所を設定します。幸い、同じフォルダに保存してあるので、この実行ファイルとテキストファイルはダンジョンの同じ階層に位置しています。よって、単に名前さえ教えてあげれば、すぐに見つけられます。
で、そのファイルをopenという命令で開きます。一行目でpathにテキストファイルの場所と名前を設定したので、open(path)というのは、そのテキストファイルを開けよ、という命令ですね。
一般的にファイルというものは、扉と同じで開けたら閉めないといけないのですが、このwith openという書き方をすると、「閉じなさい」という命令を書かなくてもOKとのこと。楽チンですね。
で、その中身を、fという箱の中に入れておいて、次の行でその中身をreadlinesというメソッドで読み込ませます。入れる場所は、lという箱です。
つまり、まずPathにファイルの場所と名前を入れて、その名前を利用して、そのファイルを開きそれをfという箱に入れる。で、その箱に備わっている機能を使って、今度はlという箱に、その中身を移し替える。という流れです。そうなんです。Pythonには箱に機能が備わっているんですね。
で、その後は前回も出てきた、printなんですが二行出てきています。一行目がtypeとあり、二行目はそのままです。この違いは、まあ実行してみたらわかるでしょう。
さっそくやってみます。
まず、前回と同じように地上から、目的の実行ファイルがある階層までcdコマンドで潜っていきます。
で、たどり着いたら「python test.py」のコマンド実行です。すると、以下のような結果が。
一行目は、<class 'list'>が表示されています。順番から言って、これが「print(type(l))」の実行結果なのでしょう。つまり、lという箱の種別(タイプ)を出力せよ、ということです。で、それが<class 'list'>、つまり「リスト」という箱だったわけです。
で、その次の行に先ほど作成したサンプルのテキストファイルの中身が表示されています。つまり、うまく読み込めたわけです。でも、そのまま読み込めたというわけではなく、
['これはテキストファイルです。\n', 'サンプル用に作りました。\n', '皆さん、これから仲良くしてください。']
のようにいろいろ記号が含まれています。これが<class 'list'>の箱の特徴です。ともあれ、それについて調べるのはまた後にして、今回は無事テキストファイルを読み込めたということで、OKとしておきましょう。
(つづく)