Python からテキストファイルの操作 ~分かりづらいread, readline, readlinesの違いを整理~
パイソンで分かりづらいread, readline, readlinesの違いを整理しよー
こんばんわ、たっきーです。
- 前回の教室で、sho君がチャレンジしたPython からテキストファイル操作の発展系を学びましょう。
分かりづらいread, readline, readlinesの違いを整理します。
テキストファイルを操作する場合、読み出しに関わるメソッドは3つあります。
メソッド | 説明 |
---|---|
read() | ファイルを全て読み込みstr型に格納、その文字列データに対して処理を行う |
readline() | 1行毎に読み込みstr型に格納、その処理を繰り返す |
readlines() | ファイルを全て読み込みlist型に格納、1行毎に処理を行う |
- 説明を読んでも分かりませんね。動作や使い方が異なりますので、実際に書いて試しましょう!!
- 各メソッドのサンプルを使ったプログラムを作成しました。同じディレクトリに
text.txt
のファイルを作成し、テキストを数行準備してください。
# coding: utf-8 # readの場合 (ファイルのEOFまで全て読み出す) file1 = open("text.txt", mode="r") str1 = file1.read() file1.close() print ("+"*50) print ("readメソッドで読み込んだ場合の型 ⇒ ", end="") print (type(str1)) #readで読み出したstr1には改行コードが含まれる print (str1) print ("") # readline (1行ずつ文字列として読み出す) file1 = open("text.txt", mode="r") str1 = file1.readline() print ("+"*50) print ("readlineメソッドで読み込んだ場合の型 ⇒ ", end="") print (type(str1)) while str1: #EOFまで読み出す print (str1, end="") #readlineで読み出したstr1には改行コードが含まれる, 各printにも改行コードが付加されるためここではカットする str1 = file1.readline() file1.close() print ("") # readlines (ファイルのEOFまで全て読み出し、配列に格納) file1 = open("text.txt", mode="r") str1 = file1.readlines() file1.close() print ("+"*50) print ("readlinesメソッドで読み込んだ場合の型 ⇒ ", end="") print (type(str1)) #1行ずつリストの要素に格納される print ("普通に表示させた場合: ") print (str1) print ("\n(*)ループを使ってリスト内の文字列表示させた場合: ") for i in range(len(str1)): print (str1[i], end="") #リストの要素には改行コードも含まれるため、各printの改行コードはカットする
ー 以下実行結果です。
‐ read, readline, readlinesの違い分かりましたか??