こんにちは、ミナトです。
「Pythonでファイルの編集はどうやるの?」
というあなたのために今回はPythonのファイル操作について解説します。
アプリケーションの開発では、ログファイルを作成したり、CSVファイルを出力したりとファイルを扱うシーンは多く発生します。
初心者にも分かりやすく解説していますので、ぜひご確認ください。


じゃあ、今回はPythonでのファイル操作について解説するで!
目次
ファイル操作の基本
ファイルにアクセスするにはopen()関数を利用します。
第一引数にファイル名(ファイルのパス)、第二引数にモード、第三引数に文字エンコードを指定します。
エンコードは省略可能で、実行環境で定められている文字コードを利用します。例えばmacならUTF-8になります。
open(ファイル名, モード, encoding=”エンコード名”)
f = open('sample.txt', 'r', encoding='utf_8')
ファイルの書き込み
ファイルに新規作成で書き込みを行う際は、モードを「w」とします。
f = open('sample.txt', 'w')
f.write('これはテストです。\n')
f.close()
ファイルに追加
ファイルの最終行に追加で書き込みを行う際は、モードを「a」とします。
f = open('sample.txt', 'a')
f.write('これはテストです2。\n')
f.close()
ファイルの読み込み
ファイルの読み込みを行う際は、モードを「r」とします。
全行読み込み
read()メソッドを利用することでファイルの内容全てを取得できます。
f = open('sample.txt', 'r')
body = f.read()
print(body)
## 出力
これはテストです。
これはテストです2。
1行読み込み
readline()メソッドを利用するとファイルの一行を取得できます。
また、再度readline()メソッド実行すると次の行が取得できます。さらに実行すると次と一行ずつ取得していきます。
f = open('sample.txt', 'r')
body = f.readline()
print(body)
## 出力
これはテストです。
行単位で読み込む
readlines()メソッドを利用すると、ファイルの内容を一行ずつ格納したリストを取得できます。
f = open('sample.txt', 'r')
body = f.readlines()
print(body)
## 出力
['これはテストです。\n', 'これはテストです2。\n']
ファイルから一行ずつ読み込んで処理する
for文で繰り返し処理を行うことで、ファイルから一行ずつデータを取得できます。
ファイルから一行ずつデータを取得し、何らかの処理を行いた場合は以下のように記述します。
print()関数の第二引数endに空文字を指定しているのは、print()関数のデフォルトのendが改行となっており、改行が二重に出力されるのを防ぐためです。
f = open('sample.txt', 'r')
for line in f:
print(line, end='')
## 出力
これはテストです。
これはテストです2。
シーク位置
シーク位置はファイルの現在位置を指し示しています。
ファイルオブジェクトはファイルの現在の位置を覚えていて、記憶されているシーク位置からファイルの読み書きを行います。
tell()メソッドを利用すると現在のシーク位置を取得できます。
read(1)メソッドでファイルからデータを読み込むとシーク位置が変更されます。
AAA
BBX
CCC
f = open('sample.txt', 'r')
print(f.tell())
print(f.read(1))
print(f.tell())
## 出力
0
A
1
また、seek()メソッドを利用して、シーク位置を指定できます。
f = open('sample.txt', 'r')
f.seek(6)
print(f.tell())
print(f.read(1))
## 出力
6
X
with文
with文を利用すると処理実行後に自動で終了してくれます。
つまり、with文を利用するとわざわざclose()メソッドを実行しなくても、処理終了後に自動でファイルを閉じてくれます。
with open('sample.txt', 'r') as f:
for line in f:
print(line, end='')
書き込み+読み込み
書き込みと読み込みを同時に行いたい場合はモードを「w+」とします。
以下の例では、書き込んだ後のシーク位置がファイルの末尾になっているので、seek(0)で最初に戻した状態で読み込みを行っています。
with open('sample.txt', 'w+') as f:
f.write('こんにちは')
f.seek(0)
print(f.read())
## 出力
こんにちは
読み込み+書き込み
書き込みと読み込みを同時に行いたい場合はモードを「r+」とします。
with open('sample.txt', 'r+') as f:
print(f.read())
f.write('こんばんわ\n')
まとめ
今回はPythonのファイル操作について解説しました。
アプリケーション開発の中でもファイル操作はよく利用するので、実際に手を動かして慣れるようにしましょう。
最後まで読んでいただき、ありがとうございます。
この記事が、「面白いな」、「勉強になったな」という方は、SNSでシェアしていただけると嬉しいです。