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( )で書き込み処理を行うことが可能ですよ。
『Tech Teacher』3つの魅力
魅力1. オーダーメイドのカリキュラム
『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。
魅力2. 担当教師によるマンツーマン指導
Tech Teacherでは、完全マンツーマン指導で目標達成までサポートします。
東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
そのため、理解できない箇所は何度も分かるまで説明を受けることができます。
魅力3. 3,960円/30分で必要な分だけ受講
Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです。一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。
まとめ
・魅力1. 担当教師によるマンツーマン指導
・魅力2. オーダーメイドのカリキュラム
・魅力3. 3,960円/30分で必要な分だけ受講
質問のみのお問い合わせも受け付けております。
まとめ
今回はPythonでのテキストファイルの読み込みや書き込みについて詳しく説明してきましたがいかがでしたでしょうか。
今回の要点をまとめると次のようになります。
- open関数はファイルをオープンしてPythonのプログラムからファイルを利用できるようにするもの
- readメソッドはファイル内容をすべて読み込み、それを1つの文字列として返す
- readlineメソッドはファイルから1行読み込み、それを1つの文字列として返す
- readlinesメソッドはファイルの内容をすべて読み込み、各行を要素とするリストを返す
- ファイルに文字列を書き込む場合、writeメソッドを使用すると簡単
- テキストファイルが存在しない場合「mode=’w’」では新規作成する
Pythonを利用しているとファイルを扱う機会はたびたびあることでしょう。これを機会に理解を深めて、ぜひ活用してください。