この記事で分かること
- Pythonプログラムにファイルを読み込む方法が分かる
- Pythonプログラムでファイルに書き込む方法が分かる
Pythonでファイルの「読み込み」と「書き込み」を行う概要
この記事では、テキストファイルの「書き込み方法」と「読み込み方法」を説明することによって、Pythonで文字列を扱う方法を、サンプルプログラムを解説しながら説明します。
テキストファイルでは「改行」を基準に、「行」の概念が存在します。つまり、行の頭の文字から「改行コード」までを1行と呼びます。そして、テキストファイルでは「改行」も1つの文字として扱います。そのような意味で、テキストファイルの「書き込み」と「読み込み」では、「改行」の扱いが重要になってきます。文字列を読見込む方法として、テキストファイルを1行ずつ読み込む方法を使いますが、目的の文字列を正確に読み取る為の「改行」における注意点を説明します。
Pythonでファイルの「読み込み」と「書き込み」を行う環境
Pythonでファイルの読み書き方法の前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
レンタルサーバなどのlinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
Pythonでファイルの「読み込み」と「書き込み」を行うサンプルプログラム
ここでは、「test.txt」というテキストファイルに文字列を書き込む方法と、Pythonプログラム内へ読み込むサンプルプログラムを記載します。
サンプルプログラムの作成
テキストファイルの「読み込み」と「書き込み」を説明するサンプルプログラムの構成として、テキストファイルの書き込みを行う関数を定義し、その後、テキストファイルから読み込みを行う関数を定義します。最後にそれらの関数を呼び出すメインの処理を書くような構成で説明します。
- ファイル書き込み関数の定義
- ファイル読み込み関数の定義
- 定義した関数の呼び出し
1.ファイル書き込み関数の定義
ファイルの書き込みでは、「test.txt」というテキストファイルを書き込みモードで関数「open」によってオープンして、その後、「test1\ntest2\ntest3\n」という文字列を書き込んでいます。「\n」は改行を表します。関数「open」によって得られたファイルオブジェクトは最後には関数「close」で閉じるようにしましょう。
def write_file():
# 出力ファイルを生成する/オープンする
file = open('test.txt', 'w')
# ファイルへの書き込み
write_contents = 'test1\ntest2\ntest3\n'
# ファイルへの書き込み
file.writelines(write_contents)
# Close file
file.close()
- 関数「write_file」の定義の宣言する
- 「text.txt」をオープンしてファイル変数「file」に書き込みモード「w」でファイルハンドラを格納する
- 変数「write_contents」を「test1\ntest2\ntest3\n」という文字列で初期化する
- 変数「write_contents」の内容を、ファイルハンドラの関数「writelines」を使って1行ずつ書き込む
- ファイルハンドラを閉じる
2.ファイル読み込み関数の定義
次は、上記で、作成した「test.txt」から文字列をPythonプログラム内に読み込むサンプルプログラムです。
関数「open」によって取得したファイルオブジェクトに対して、関数「readline」を呼ぶことによって、1行ずつの文字列がファイル行数文入ったリスト変数「lines」を得ることができます。最後に変数「lines」を1つずつ繰り返し表示することで、変数「lines」の中身を表示しています。
def read_file():
# ファイルオープン
with open('test.txt','r') as file:
lines = file.readlines()
# 1行ずつ読みだす
for line in lines:
print(line)
- 関数「read_file」の定義の宣言する
- 「text.txt」をオープンしてファイル変数「file」に読み込みモード「r」でファイルハンドラを格納する
- 変数「lines」に、ファイルハンドラの関数「readlines」を使って1行ずつ読み込む
- 変数「lines」を1つずつ変数「line」に入れて、for文で繰り返す
- 「line」を表示する
3.定義した関数の呼び出し
ここでは、上で定義した関数を呼び出す処理を定義します。さきほど定義した2つの関数「write_file」と関数「read_file」を呼び出しています。
if __name__ == '__main__':
write_file()
read_file()
- 関数「write_file」を実行する
- 関数「read_file」を実行する
サンプルプログラムの実行結果
文字列「test1\ntest2\ntest3\n」を表示した結果になります。1行目は「test1\n」のPrint文の表示になりますが、print文自体に改行することになるので、2回改行されたような結果になっています。
$ python test.py
test1
test2
test3