本記事ではPythonでファイルを読み書きする方法について学習していきます。
プログラムを使ってファイルの操作ができるようになると、普段の作業を自動化することができます。
毎日更新しなくてはいけないファイルをPythonを使って自動的に更新してくれるようにすれば、すごく楽ですね。
本記事では、
- ファイルの読み込み方
- ファイルの書き込み方
をそれぞれ分けて説明していきます。
初心者でも分かるように説明していきますので、実際にコードを実行しながらやり方を覚えていくようにしましょう。
目次
Pythonでファイルを読み込む
まず最初にPythonでファイルを読み込む方法について解説します。
本記事では読み込んだファイルの中身を出力する所まで行います。
一旦練習用のファイルを作成しておいて下さい。
ソースコードを保存しているディレクトリに、「file.txt」というファイルを作成して下さい。
file.txtの中身は何でも良いのですが、ここでは
テスト1
テスト2
テスト3
としておきましょう。
読み込みたいファイルを開く
Pythonでファイルを読み込む方法には、2種類存在します。
- withを使う方法
- withを使わない方法
withを使わない方法から説明していきます。
ファイルを開くには、「open」という組み込み関数を使います。
以下のように記述することでファイルが開けます。
f = open('file.txt')
open({ファイル名})と記述することにより、そのファイルを開くことができます。
ここではソースコードと同じディレクトリにある、file.txtというファイルを開いています。
違うディレクトリにあるファイルを開く場合は、ディレクトリ名も書く必要があります。
f = open('data/file.txt')
この場合dataというディレクトリにあるファイルを開けます。
また、開いたファイルを閉じる場合は、以下のように記述します。
f = open('file.txt') f.close()
「.close()」と書くことで、ファイルを閉じることができます。
別にファイルを閉じることを明示しなくても、プログラムが終了すれば自動的に閉じるのですが、プログラムが稼働している間は他のプログラムからファイルを開けなくなります。
なのでトラブルを防ぐためにも忘れずにファイルを閉じておくようにしましょう。
続いてwithを使う方法を説明していきます。
先程のコードを少し変更して以下のように記述してみて下さい。
with open('file.txt') as f:
この書き方でもファイルを開くことができます。
withを使う方法の良い所は、.closeと書かなくてもファイルを閉じてくれることです。
withを使うことで閉じ忘れを防ぐことができます。
なので基本的にはこちらの書き方を使うことの方が多いです。
ファイルの内容を纏めて出力する
それでは開いたファイルの内容を、コマンドプロンプト上に出力させるようにしてみましょう。
ファイルの内容を纏めて出力する場合は、以下のように記述します。
with open('file.txt') as f: print(f.read())
read()というメソッドを使うと、ファイルを中身をすべて読み込むことができます。
後はprintを使って出力するだけです。
注意点ですが、インデントは必ず行いましょう。
例えば以下のような記述では、ファイルを読み込むことができません。
with open('file.txt') as f: print(f.read())
これではファイルを閉じてから読み込もうとしていることになるので、エラーになってしまいます。
with文は、タブ空けしていない行がきた段階でファイルを閉じてしまうので、注意しましょう。
ファイルの内容を一行ずつ出力する
続いてファイルの内容を一行ずつ出力するやり方です。
一行ずつ出力するにはfor文を使います。
with open('file.txt') as f: for line in f: print(line)
for文を使うことで一行ずつファイルを読み込むことができます。
ファイルを途中の行まで出力したい場合は、breakを使って処理を中断させましょう。
count=0 with open('file.txt') as f: for line in f: print(line) count+=1 if count == 2: break
2週目の段階でbreakすることで、ファイルを2行目までしか出力できないようにしています。
Pythonでファイルに出力する
ファイルに出力するやり方もご紹介します。
こちらのやり方もそこまで難しくはないので一緒に覚えておきましょう。
書き込みたいファイルを開く
ファイルの開き方は、読み込むとき同様openを使います。
ただし書き込むときはopenの第2引数に「’w’」を入れて下さい。
こうすることで上書きモードでファイルを開くことができます。
with open('newfile.txt','w') as f:
ファイルが存在していなければ、新規作成されます。
ファイルが存在している場合は、既存の内容は削除されてしまうのでご注意下さい。
ファイルに書き込む
ファイルに書き込むには、writeというメソッドを使います。
write({書き込みたい内容})と記述することで書き込みを行います。
with open('newfile.txt','w') as f: f.write('新しい書き込み')
newfile.txtを開いて正しく書き込まれているか確認してみて下さい。
ファイルに追記する
上記のやり方はファイルを新規作成、あるいは上書きするやり方です。
元々あるファイルの記述に追記することはできません。
追記でするにはopenの第2引数に「’a’」を入れて追記モードにする必要があります。
with open('newfile.txt','a') as f: f.write('2つ目の書き込み')
これでファイルの中身が、
新しい書き込み
2つ目の書き込み
となっていたら追記成功です。
追記モードにするか上書きモードにするかは間違えやすいので注意しましょう。
まとめ
本記事ではPythonを使ったファイルの操作方法について解説しました。
ファイルの操作ができるようになると、Pythonを使ってスクレイピングができるようになったり、色々できることの幅が広がります。
基本的なやり方は本記事で解説した通りなので、後は自分でソースコードを変えてみて色々試してみましょう。