こんにちは。IT/経済ジャーナリストで投資家の渡辺です。
前回は「ファイル」を開いて、そこに文字を書き込むやり方を学習しました。
<過去記事>
・ファイルを読み書きする 〜Pythonでのファイルの読み書きはとてもシンプル
せっかくファイルができたので、今回はそのファイルを読む方法について説明しますね。
具体的には、ディスク上にあるファイルをオープンして、中身を読み込んで表示する処理になります。
ファイルを開き、1行ずつ読み込む
それではいつも通り、PyCharmを起動し、今あるコードをいったん全部削除してください。
前回同様、1行ずつ解説しますので、それぞれの機能を考えながら、コードを1行ずつ書いていきましょう。
まず日本語が正しく表示されるように、最初の行で文字コードをUNICODE(UTF-8)に指定します。
日本語コードは複数ありますので、開くファイルの種類によっては文字化けすることがあります。
前回作ったファイルはUTF-8で作っているので、心配ありませんが。
# coding: utf-8
ベタですが、ファイル名は datafile という名前にします。
open()関数でファイルを開くのはもうOK?
すでに学習したように、ファイルはopen()関数で開いて使用します。
書き込みの時は write ということで ‘w’ を指定しました。
今回は読み込みなので、read ということで ‘r‘ を指定します。
前回の学習で作ったファイル名test.txtを、今度は読み込み用として開きます。
ファイル名は分かっているので、文字列として‘ ‘、または” “で括ります。
myfile = open(“test.txt”, ‘r’)
これで前回作られたtest.txtが、myfileという名称でファイルを開き、読めるようになりました。
myfileから1行読み込む
開いたテキストファイルですが、1行の文字列のみで作られています。
ここから1行読み込みます。
ファイルから1行読み込むには、readline()関数を使います。
そこで、myfileから1行読み込むよう、指示を出します。
前回も学習しましたが、. で区切って命令を書きます。
このままだと読み込んだ内容を置く場所がないので、文字列の変数strに代入することにします。。
str = myfile.readline()
読み込まれた内容については、print()文で出力してください。
print(“ファイルの内容:”, str)
print()文のカッコの中をカンマ(,)で区切ることで、出力したい内容を続けることができるのは覚えているでしょうか。
myfile.close()
書き込みと同様、使い終わったファイルは、close()で閉じてください。
念のため、これまで作ったコードを以下にまとめます。
# coding: utf-8
myfile = open(“test.txt”, ‘r’)
str = myfile.readline()
print(“ファイルの内容:”, str)
myfile.close()
実際に動かしてみる
では、いつものように「Run ‘study00’」で実行してみてください。
以下のように、test.txtファイルの中身が表示されればOKです。
ちなみに、test.txtファイルの中身を再確認すると、こういう内容です(右側のエディタ)。
内容が正しく出力されていますね。
ファイルの読み込みとprint()文をくっつけてしまう
これでテキストファイルの読み出しができるようになりました。
少し、Pythonらしいプログラムの書き方についてもやってみます。
先ほど、1)いったんファイルの内容をreadline()で読み込み、2)読み込んだ文字列を変数strに置いて、3)変数strをprint()文で出力しました。
以下のようなコードでした。
str = myfile.readline()
print(“ファイルの内容:”, str)
これを変数strを使わず、一気に出力させることもできます。
print()文のカッコの中に、そのままファイル読み出しのコードを書いてしまうのです。
まず、上の行にあるファイルから1行読み込む処理は、使用しないので削除するか、先頭に # を付けてコメント文として、Pythonが処理しないようにしてください。
これを「コメントアウト」といいます。
# str = myfile.readline()
その上で、これまでstrとなっていたprint()文の中身を直接ファイルから行を読み込んで、そのままその内容を出力するため、以下のように指定してください。
print(“ファイルの内容:”, myfile.readline())
ファイルの中身は同じなので、先ほどと同様、このように出力されるはずです。
このセミナーは初学者を想定しているため、多少面倒でも1つ1つステップを書いていますが、慣れてくるとこういうやり方もあるということです。
<今日の要約ノート>
open(ファイル名、’r’) は読み込みモードでファイルを開く。ファイルには名前を付け、そのファイルに対して操作を行う。readline()でファイルの内容を1行読み込む。
コメント
[…] ・ファイルから1行読み込むお作法 〜ファイルを開き、readline()を使う ・ファイルを読み書きする 〜Pythonでのファイルの読み書きはとてもシンプル […]