Data Science|Basics

ファイル操作をマスターしよう!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を利用しているとファイルを扱う機会はたびたびあることでしょう。これを機会に理解を深めて、ぜひ活用してください。