【Python】テキストファイルの新規作成・読み込み・書き込み(追記)の方法

時計 2021.04.25 / 時計

【Python】テキストファイルの新規作成・読み込み・書き込み(追記)の方法

本記事では、Pythonによるテキストファイル新規作成・読み込み・書き込み(追記)の方法について詳しく解説していきます。

仕事も含めた様々な場面でテキストファイル(.txt)は使われます。

そのためPythonでテキストファイルを扱えるようになると、テキストファイルを使った業務の自動化や、その業務の効率化を測ることができます。

テキストファイルを扱う上で、最低限必要な技術である、「新規作成」、「既存ファイルの開き方」、「読み書き」について学んでいきましょう。

本記事を通して以下の知識を学べます。

学べる知識
  • テキストファイルの開き方(既存ファイル・新規作成)
  • 文字列の書き込み(上書き)・追記方法
  • 既存ファイルから文字列の読み込み方法

テキストファイルの開き方

open()関数

テキストファイルを開くためには、open()関数を使用します。
open()関数には、開きたいテキストファイルのパス(絶対パスまたは相対パス)を渡します。

f = open('office54.txt')

open()関数はファイルオブジェクトを返します。
上記例では、fという変数にファイルオブジェクトを格納しています。

このfに対して、ファイルオブジェクトに用意されているメソッドを使用して、文字列の読み書きを行っていきます。

モードの変更(第二引数)

open()関数の第二引数に以下に示すオプションを指定することで、ファイルのモード(書き込み・追記)を変更できます。

モード 意味
“r” 読み込みモード。ファイルが存在しない場合はエラー
“w” 書き込みモード。ファイルが存在しない場合はファイルを新規作成
“a” 追記モード。ファイルが存在しない場合はファイルを新規作成

第二引数でモードを指定しなかった場合は、読み込みモードでファイルは開かれます。
すなわちファイル内の文字列の読み込みは可能だけど、文字列の書き込みはできないということです。

次項から各モードについて詳しく説明していきます。

FileNotFoundError

open()関数の第一引数に指定したファイルが存在しなかった場合は、FileNotFoundErrorが発生します。

FileNotFoundError: [Errno 2] No such file or directory: '〇〇.txt'

書き込みモードで開く(新規作成)

open()関数を使ってテキストファイルを書き込みモードで開くには、次のように記入します。

f = open('office54.txt', 'w')

第一引数にテキストファイルのパス、第二引数に書き込みモードwを指定します。

開いたテキストファイルに文字列を書き込むには、write()メソッドを使用します。

f.write('test')

最後にファイルをclose()メソッドで閉じます。

f.close()

開いたテキストファイルに文字を書き込み、閉じるまでの流れは次のようになります。

f = open('office54.txt', 'w')
f.write('test')
f.close()
一覧の流れ

ファイルを開く(open)→何かしらの処理→ファイルを閉じる(close)

書き込みのwでテキストファイルを開いている場合、上書きになるので、もともと書き込まれていた文字はなくなりますので注意してください。

第一引数で指定したファイルが存在しなかった場合は、そのファイル名で新規作成されます。

追記モードで開く

上書きではなく、文字列を追記したい場合は、追記モードaでテキストファイルを開きます。

f = open('test.txt', 'a')

書き込みモードwと同じで、指定したファイルがない場合は、そのファイル名で新規作成されます。

読み込みモードで開く

開いたファイルに文字列の書き込みはしない場合は、読み込みモードで開きます。

f = open('office54.txt', 'r')

第二引数でモードを指定しなかった場合も、読み込みモードで開かれるため、上記と下記のopenは同じ意味です。

f = open('office54.txt')

withステートメント

open()関数で開いたファイルは、必ず最後にclose()メソッドで閉じる必要があります。

しかしwithステートメントでテキストファイルを開くことで、close()メソッドを省略することができます。

with open('test.txt', 'w') as f:
    f.write('TEST')

withステートメントでファイルの閉じ忘れを防止することができます。

文字列を読み込む

テキストファイルの内容を読み込むためのメソッドは2つ用意されています。

  • read()メソッド
  • readlines()メソッド

以下でそれぞれのメソッドについて解説します。

またここで使用するテキストファイルは以下の内容とします。

Hello world!
This is OFFICE54!

read()メソッド

ファイルオブジェクトのread()メソッドは、テキストファイル内のデータをひとつの文字列として読み込みます。

with open('test.txt', 'r') as f:
    print(f.read())
# Hello world!
#This is OFFICE54!

ひとつの文字列として読み込むので、使い勝手はそんなによくはありません。
テキストファイルを扱うPythonプログラムでは、次に解説するメソッドを私は主に使用します。

readlines()メソッド

ファイルオブジェクトのreadlines()メソッドは、テキストファイル内のデータを行単位で分割したリストとして取得することができます。

with open('test.txt', 'r') as f:
    print(f.readlines())
# ['Hello world!\n', 'This is OFFICE54']

readlines()で取得した各行の文字列は、最終行以外は改行文字コードが入っていることに注意してください。

このreadlines()メソッドを使う場合は、繰り返しForと組み合わせることが多いです。

with open('test.txt', 'r') as f:
    for text in f.readlines():
        print(text)

まとめ

本記事「【Python】テキストファイルの新規作成・読み込み・書き込み(追記)の方法」はいかがでしたか。

Pythonでは、テキストファイルの読み書きは非常に簡単にできるので、ぜひ仕事で生かしてください。