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の違い分かりましたか??
![]()