Python 文法・関数

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

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

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


本ブログを運営しているTech Teacherは、業界初のプログラミング家庭教師サービスを提供しています。

その特徴は完全マンツーマン・フルオーダーメイド指導・30分ごとの利用が可能であるところです。

完全マンツーマン

Tech Teacherのマンツーマン指導なら理解できない箇所は何度も分かるまで説明を受けることができます。

フルオーダーメイド指導

Tech Teacherではあらかじめ決められたカリキュラムはありません。そのためご自身の学習状況や学びたいことに合わせた指導が可能です。

一括支払いなし

一般的なプログラミングスクールの料金体制はカリキュラムに対して一括払いですが、Tech Teacherでは利用した分だけの支払いとなります。そのため、大きな費用負担がなく気軽に始めることができます。

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( )で書き込み処理を行うことが可能ですよ。

「Tech Teacherで!~家庭教師ならではの3つの魅力~」

本Blogを運営するプログラミング家庭教師Tech Teacherは以下のような疑問をすべて解決できるサービスです。

・Pythonの応用をもっと学びたいが、値段が高いスクールに通うのは気が引ける

・目的別に短時間の利用ができるサービスがあったらいいな

比較対象 Tech Teacher プログラミングスクールA社
受講形態
1対1

1対3~5
担当教師
担任教師
×
講座別の講師
カリキュラム
自分専用指導

全員指導
仕事・学業との両立
可能
×
不可能
メンター制度
担任教師

異なる担当
料金
授業分だけ
×
一括払い
初期費用
入会金
22,000円
×
一括払い
528,000円
シミュレーション
(3ヶ月90分の指導を週1で行う)

164,500円
×
528,000円

以下、Tech Teacherの3つの魅力を紹介します。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

1.効率的な学習スタイル

一人のためだけの指導~1対1の完全個別指導~

一般的なプログラミングスクールでは大人数の対面講義や、録画講義の視聴またはオンラインでの受講がメインです。そうなると学習しながら生じた疑問をすぐに聞くことができずに、先に進んでしまい内容をうまく理解できなかったり、作業がうまく進まなかったりします。

家庭教師であれば、マンツーマンのため自分の課題にだけ焦点を当てて指導を受けられるので、1回の授業を濃い時間にすることができます。

無駄のない学習~フルオーダーメイド~

Tech Teacherは一般的なプログラミングスクールと異なり、あらかじめ決められたコースやカリキュラム設定がありません。
一般的なプログラミングスクールのカリキュラムでは、自分が本当に学習したいことを学ぶのにいくつか他の講義を受けなければなりません

Tech Teacherでは生徒様の現状の習熟度・目的・期間に応じてお悩みにダイレクトに刺さる授業を展開し、最短で目標となるゴールを目指せます。

2.自分のペースで学習できる

必要な分だけ~従量課金モデル~

Tech Teacherでは、他にはない「短時間(30分ごと)」の利用が可能です!勉強していてちょっとわからないところ、プログラミング学習のモチベーション維持など様々な疑問や悩みを解決することができます。
授業を受けた分だけ後払いする料金体系(3,960円〜 / 30分)のため、必要な期間に必要な分だけ受講できます。

好きな時間で~相性のいい教師の紹介~

Tech Teacherではあらゆるニーズに対応できる教師陣がいるため、生徒様の希望条件に最適な教師を紹介します。

Tech Teacherを受講している方のほとんどが仕事をしている社会人の方です。TechTeacherの家庭教師なら受講日時や回数を、生徒様のご都合に合わせて柔軟に調整することができ、スキルだけでなく都合の良い時間で指導できる教師を選べます。

3.確実に身につく

挫折しない~担任教師の継続指導~

オンライン・オンデマンドの講義の視聴形態だと、学習に対するモチベーションの維持が課題となり、当初の予定よりも受講期間が伸びたり、挫折したりする恐れがあります。

Tech Teacherでは、担任教師が生徒と二人三脚で学習をするため、学習が大変なときも寄り添ったサポートを受けられます。

具体的には学習計画の管理や受講目的を明確にした上で中間目標を設定し、それに向けた学習の指導をすることでモチベーションの維持を図ります。

いつでも質問できる~チャットサポート(オプション)~

担当教師は授業の時間以外に、チャットサービスを利用して、自分で学習しているときに生じた疑問をすぐに質問して解決することができます。

Javaをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

Tech Teacherへのお問い合わせ

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

まとめ

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

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

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

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