楓プログラミングスタジオ たっきーBlog

JEUGIAカルチャーセンター桑名からスタートした「はじめてのプログラミング教室」は、『楓プログラミングスタジオ』に生まれ変わりました。小学生と中学生の子どもがメインですが大人初心者も大歓迎。教室でのワークの様子やプログラミングに関する記事を掲載します。弥富教室の体験と講座のお申込みは、https://kaede-pgstudio.net/contact/ まで。桑名教室は、JEUGIAカルチャーセンター桑名(Tel:0594-27-7211)まで。

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の改行コードはカットする

ー 以下実行結果です。

f:id:takaaki-niikawa:20180207223934p:plain

‐ read, readline, readlinesの違い分かりましたか??

  • テキストを扱うとリストや改行コード、文字コード等の仕組みを学ぶ良い機会になります。
  • また、高校生の頃C言語でテキストファイルから読み書きできた時の感動を思い出しますー。