こんにちは、データ分析屋のやじろべえ(@yajirobe_papa)です。
Python超入門第十三回です。前回はPythonにおけるテキストファイルの読み込みについて解説しました。
今回はテキストファイルの書き込みについて解説していきます。
それでは早速やっていきましょう!
目次
ファイルの書き込み
Pythonでファイルを書き込むには、以下の手順で行います。
- open関数のモードを書き込みモードを選択
- write関数またはwritelines関数で書き込み
一つずつ見ていきましょう。
テキストファイルを書き込みモードで開く
前回の講座でファイルを開くためにはopen関数を使うことを学びました。
実はopen関数にはオプションでモードを選択することが出来、ファイルの書き込みを行う時はモードを書き込みモードにしなければなりません。
また、書き込みモードにはいくつか種類があり、よく使われるのは次の三種類です。
- 新規作成(同じ名前のファイルがあった場合は上書き):”w”
- 新規作成(同じ名前のファイルがあった場合はエラー出力):”x”
- 追記(既存ファイルの末尾に追加):”a”
新規作成(同じ名前のファイルがあった場合は上書き):”w”
test.txtというテキストファイルを新規作成して、ファイルの中身にはwrite関数を使って’テスト’という文字列を入力してみます。
また、’テスト’の隣には改行コード’\n’も追加しておきます。
ここでは前回習ったwith文で書いていきます。忘れてしまった人は前回の講座を復習してみてくださいね。
次のコードを実行してみると、test.txtというファイルが生成されて、中身を見てみると’テスト’が書かれていると思います。
In [1]: with open('test.txt', mode='w', encoding='utf-8') as file: file.write('テスト\n')
新規作成(同じ名前のファイルがあった場合はエラー出力):”x”
次に、先ほど作ったファイル(test.txt)がある状態で、同じファイル名で書き込みモード’x’にして書き込もうとしてみます。
実行してみると、同じファイル名があるので書き込めないというエラーが発生しますね。
In [2]: with open('test.txt', mode='x', encoding='utf-8') as file: file.write('テスト\n') Out [2]: --------------------------------------------------------------------------- FileExistsError Traceback (most recent call last) in ----> 1 with open('test.txt', mode='x', encoding='utf-8') as file: 2 file.write('テスト\n') FileExistsError: [Errno 17] File exists: 'test.txt'
追記(既存ファイルの末尾に追加):”a”
前回の記事で使った名前が記入されているテキストファイルに’アレックス’を追記してみます。
これで実行すると、name_data.txtの最後の行に’アレックス’が追加されていると思います。
In [3]: path = 'name_data.txt' with open(path, mode='a', encoding='utf-8') as file: file.write('アレックス\n')
writelines関数で書き込み
writelines関数もデータを書き込む際に使う関数ですが、write関数と異なる部分はリストを引数として渡します。そしてリストの要素を書き込む処理を行います。
言葉だけでは少しわかりにくいと思いますので、コードで確認しましょう。
次の例ではまず、エマ、ジェームス、マイクの三人の名前が改行コード付きでリストにしています。
そして、先ほどのname_data.txtにwritelines関数で追記する処理になっています。
実行して結果を見てみると、確かに名前が追加されいていると思います。
In [3]: n_list = ['エマ\n', 'ジェームス\n', 'マイク\n'] path = 'name_data.txt' with open(path, mode='a', encoding='utf-8') as file: file.writelines(n_list)
少しだけ応用
最後に前回の講座内容と今回の内容の応用として以下のことをやってみましょう。
「name_data.txtに書かれている名前に’さん’を付けてrename_data.txtというファイルで保存」
これを実現するためのコードの一例として次のようになります。
In [4]: path = 'name_data.txt' rename_list = [] with open(path, encoding='utf-8') as file: data = file.readlines() for line in data: re_name = line.rstrip('\n') + 'さん' rename_list.append(re_name+'\n') In [5]: path = 'rename_data.txt' with open(path, mode='w', encoding='utf-8') as file: file.writelines(rename_list)
まとめ
今回はPythonでのテキストファイルの書き込みについて解説しました。
前回の講座内容と今回の内容でテキストファイルを読み込んで、書き込みを行うことが出来るようになりました。
テキストファイルの読み書きが出来るようになると、普段の業務を効率化することも出来るようになってくるので、面倒なことは全部自動化させてしまいましょう!
そして、次回はついに本講座の最終回となります!
最終回ではimport文を使って様々な標準ライブラリを読み込んで使ってみることについて記事にします。
それでは今回もお疲れ様でした。