Python

ファイル操作をマスターしよう!Pythonでの読み込み・書き込み方法を徹底解説!

Pythonを学び始めて、Pythonでテキストファイルを扱いたいと思い始めた人も少なくないでしょう。
そこで今回はPythonでテキストファイルを操作する方法について詳しく説明していきます。

それでは見ていきましょう。

テキストファイルを読み込む

テキストファイルを読み込むためにはopen関数を使用してファイルをオープンし、その後にファイルの内容を読み込む必要があります。

テキストファイルの内容を読み込むメソッドには「readメソッド」「readlineメソッド」「readlinesメソッド」の3つがあります。

ここからはopen関数と、そこからテキストファイルを読み込む3つのメソッドについて詳しく説明していきます。

open関数

open関数は、Pythonのプログラムからファイルを利用できるようにしてくれるものです。

シンプルなopen関数の構文は「open ( file , mode )」です。それぞれの引数には

  • file:オープンするファイル
  • mode:オープンするモード

を指定します。

modeに指定できる値の種類や使い方は以下の通りです。

modeの値 モード
‘ r ‘ 読み込み用
‘r+’ 既存ファイルの読み書き用
‘ w ‘ 書き込み用
‘w+’ ファイルの読み書き用
‘ a ‘ 追記用
‘a+’ 追記・読み書き用
‘ x ‘ 排他的書き込み用
すでにファイルがあるときはエラーとなる
‘ b ‘ バイナリモード
‘ t ‘ テキストモード

これらのモードは次のように使用します。

1. # 読み込む
2. open ( ‘開きたいファイル’ , ‘r’ )
3.
4. # 書き込み
5. open ( ‘開きたいファイル’ , ‘w’ )
6.
7. # 読み書き
8. open ( ‘開きたいファイル’ , ‘w+’ )

または、キーワード引数を指定して記述することもできます。

1. # 読み込む
2. open ( ‘開きたいファイル’ , mode=’r’ )
3.
4. # 書き込み
5. open ( ‘開きたいファイル’ , mode=’w’ )
6.
7. # 読み書き
8. open ( ‘開きたいファイル’ , mode=’w+’ )

モードを省略した場合、読み込みモード「’r’」とみなされるため、読み込む際には省略することもできます。

readメソッド

「readメソッド」とは、ファイル内容をすべて読み込み、1つの文字列として返すメソッドです。

実際にコードを使用して詳しく説明していきます。

まず、次のようなテキストファイル「sample.txt」を用意します。

#sample.txt
1. Hello World
2. Hello Python
3. Hello Sample

そして次のプログラムを実行してみましょう。

1. f = open ( ‘example . txt’ )
2. str = f . read ( )
3. print(str)
4. f . close ( )

実行結果は次のようになります。

Hello World
Hello Python
Hello Sample

このように、read( )ではファイルの中身をすべて読み込み1つの文字列として返します。

readlineメソッド

「readlineメソッド」は、ファイルから1行ずつ読み出し、文字列を返すメソッドです。読み込みを行うサイズも指定できますよ。

では、実際に呼び出してみましょう。

1. f = open ( ‘example . txt’ )   # 開きたいファイルを指定
2. line = f . readline ( )
3. print(line)
4. f . close ( )

このコードを実行すると次のようになります。

Hello World

readline( )は最初の行から1行ずつ読み込むため、すべての内容を読み込むにはループ処理を使用します。

1.  f = open ( ‘example . txt’ )
2.  line = f . readline ( )
3.  for i in line :
4.  print(line)
5.  line = f . readline ( )
6.  f . close ( )
7.
8.  # 実行結果
9.  Hello World
10.
11. Hello Python
12.
13. Hello Sample

readlinesメソッド

「readlinesメソッド」はファイル内容をすべて読み込み、各行を要素とするリストを返すメソッドです。readlineメソッドとは違い、反復処理を簡単に記述できますよ。

1. f = open ( ‘example . txt’ )
2. list = f . readlines ( )
3. print(list)
4. f . close ( )
5.
6.
7. [ ’Hello World\n’ , ’Hello Python\n’ , ’Hello Sample’ ]

readlineメソッドと同じように、要素となる文字列の末尾には改行コードが含まれることに注意してください。

また、readメソッドと同じようにreadinesメソッドでは基本的にはすべての内容が一度に読み込まれる点には注意しておきましょう。

readlines( )で読み込んだファイルを1行ずつ表示するにはfor文を使用して次のように記述します。

1.  f = open ( ‘example . txt’ )
2.  list = f . readlines ( )
3.  for line in list :
4.  print(line)
5.  f . close
6.
7.  # 実行結果
8.  Hello World
9.
10.  Hello Python
11.
12. Hello Samples

テキストファイルに書き込む

テキストファイルへの書き込みを行う目的でファイルをオープンする場合、mode引数に「’w’」を指定することになります。

ここでは新規ファイルとして「myfile . txt」を作成して、書き込みを行ってみましょう。

1. f = open ( ‘myfile . txt’ , ‘w’ )   # ’w’=mode引数

このコードを実行してからファイル一覧を確認してみるとmyfile . txtファイルが作成できたことが分かるでしょう。

writeメソッド

作成できたファイルに書き込むにはwriteメソッドを使用するのが簡単なので、実際に書き込んでみましょう。

myfile . write ( ‘Hello Python\n’ )

writeメソッドは最後に自動的に改行コードを付加することはないので、必要であれば自分で改行コード「\n」を追加する必要があるので注意しましょう。

また、writeメソッドには整数などの文字列以外のオブジェクトは渡せないことにも注意が必要です。無理に書き込もうとするとTypeErrorが発生してしまいます。

数値を書き込みたいのであれば、文字列のformatメソッド・f文字列を使用しましょう。

テキストファイルが存在しない場合の書き込み方

「mode = ’w’」ではファイルが存在しなければ新規作成します。存在している場合は上書きとなってしまうので注意しましょう。

対して「mode = ’x’」とするとファイルが存在する場合にはエラーとなり、ファイルが存在しない場合にのみファイルが書き込み用として開かれます

また、標準ライブラリのOSモジュールの「os . path . isfile ( )」でファイルが存在するかどうかチェックすることができます。これを利用するとファイルが存在しない場合にのみopen( )で書き込み処理を行うことが可能ですよ。

まとめ

今回はPythonでのテキストファイルの読み込みや書き込みについて詳しく説明してきましたがいかがでしたでしょうか。

今回の要点をまとめると次のようになります。

  • open関数はファイルをオープンしてPythonのプログラムからファイルを利用できるようにするもの
  • readメソッドはファイル内容をすべて読み込み、それを1つの文字列として返す
  • readlineメソッドはファイルから1行読み込み、それを1つの文字列として返す
  • readlinesメソッドはファイルの内容をすべて読み込み、各行を要素とするリストを返す
  • ファイルに文字列を書き込む場合、writeメソッドを使用すると簡単
  • テキストファイルが存在しない場合「mode=’w’」では新規作成する

Pythonを利用しているとファイルを扱う機会はたびたびあることでしょう。これを機会に理解を深めて、ぜひ活用してください。

プログラミングの家庭教師『Tech Teacher』


引用元:Tech Teacher

「スクールに通い続ける自信がない…」
「時間がなくてスクールに通えない…」

そんな方にはプログラミングの家庭教師『Tech Teacher』がおすすめです。
Tech Teacherはマンツーマン指導なので、生徒様一人ひとりに最適な指導を行うことができます。また、オンライン指導も可能なので、全国どこにいても家庭教師の授業を受けることができます。

Tech Teacherの3つの特徴


生徒様に最適化されたマンツーマン指導
完全マンツーマンの指導なので、生徒様の目的・学習状況・ご要望に合わせて、最適な指導をご提供いたします。

指導力・人柄・相性の優れた教師のご紹介
Tech Teacherには採用率20%の選考を突破した、指導力の高い教師が在籍しています。また、選考では指導力だけではなく人柄も重視しております。

1,000人の教師が在籍!幅広い指導に対応可能
業界トップレベルの1,000人の教師が在籍しています。そのため、幅広い言語・ツール・目的に対応することができます。

家庭教師ならではの5つの魅力


オーダーメイドのカリキュラム
生徒様一人ひとりに習熟度・目的・期間に応じて最適なカリキュラムを提供いたします。

きめ細やかなフォローが可能
生徒様からのご要望にきめ細やかに対応し、学習計画や勉強法などの指導もできるので、普段の勉強も捗ります。

習い事・学業・お仕事との両立が簡単
教室に通う必要がないので親御様の送迎も不要です。授業時間・頻度を生徒様のご都合に合わせて自由に調節することができます。

自分のペースで進められる
生徒様の理解度や意欲に応じて授業のスピードを調節できます。不明点や疑問点は都度立ち止まって解消できるので、着実に理解して進むことができます。

すぐ質問できるから挫折しない
先生を独り占めできるので、周りの目を気にすることなく分からないところをいつでも質問できます。

Tech Teacherへのお問い合わせ

無料体験授業・資料請求のお問い合わせはこちらから

質問のみのお問い合わせも受け付けております。