[Python] ファイルへの書き込み(文字列、リスト)

ファイルの読み込み、書き込みの手順

・データをファイルへ書き込むには
1. ファイルを開く
2. ファイルの内容を読み込む、またはファイルに書き込む
3. ファイルを閉じる
という手順を踏む。
・これらの一連の処理は以下のコードで実行できる。

# 文法
# ファイルの読み込み
f = open('ファイルのパス', 'r')
f.read()
f.close()

# ファイルへの書き込み
f = open('ファイルのパス', 'w')
f.write('文字列')
f.close()

・まず、open() 関数でファイルを開く。このとき、1つ目の引数はファイルのパスを指定し、2つ目の引数は r や w を指定している。
r は read の略で、読み込み専用ファイルを開くときに用いる。
w は write の略で、書き込み専用ファイルを開くときに用いる。
・2つ目の引数について、w は上書きを行う書き込み専用モード。a は既存のファイルに追記を行う書き込み専用モード。x は新規のファイルにのみ書き込める書き込み専用モード。
・read() メソッドで、ファイルの内容を文字列として取得できる。
また、write() メソッドでは、ファイルに文字列を書き込める。
・どちらも最後に、close() メソッドでファイルを閉じる。

with 構文

・with 構文を用いることで、上記のファイルの読み書きの手順を一部省略できる。open() 関数は with 構文の中で宣言され、close() メソッドの宣言はなくなる。

# 文法
with open('ファイルのパス', '処理のモード') as f:
f.read() or f.write('文字列')

ファイルへのリストの書き込み

・write() メソッドは、ファイルに文字列を書き込むメソッドで、リストを書き込むメソッドではない。リストを書き込む場合はwritelines() メソッドを用いる。

# 文法
list = ['要素1', '要素2', '要素3']
with open('ファイルのパス', '処理のモード') as f:
    f.writelines(list)

# ex.1
fruit_list = ['apple', 'orange', 'banana']
with open('C:\Users\Name\Document\フルーツのリスト.txt', 'w') as f:
    f.writelines(fruit_list)

この方法で書き込むと、次の画像のようにファイルに書き込まれる。

無題2

テキストファイルにリストの要素が全て書き込まれているが、要素と要素の間にはスペースがなく、区切りがわからない。

そこで、次のようなコードを実行すると1つ1つの要素の区切りがはっきりする。

# ex.2
fruit_list = ['apple', 'orange', 'banana']
fruit = "\n".join(fruit_list)
with open('C:\Users\Name\Document\フルーツのリスト.txt', 'w') as f:
    f.write(fruit)

無題2

リスト 'fruit_list' をそのまま書き込むのではなく、リスト内の要素を改行コード( \n または ¥n )で結合し、できた文字列を write() メソッドで書き込む。ここでは改行コードの結合にjoin() メソッドを用いている。
join() メソッドはリストのメソッドではなく、文字列のメソッドである。要素と要素の間に(ex. 2では)改行コードを入れるメソッドである。

ファイルのパス

・現在開いているフォルダにファイルを作成・保存したいときには現在のワーキングディレクトリをコーディングにより得る方法がある。
・open() 関数でファイルを開く際には、通常、絶対パスが必要であるが、この方法を使うと相対パスの記入のみでファイルが開ける。
* 現在のワーキングディレクトリはテキストエディタ(VSCodeではターミナル)で確認できる。

# 文法
import os
print(os.getcwd())
f = open('ファイルの相対パス', '処理のモード')
# ex.3
# 現在のワーキングディレクトリを得て画面に表示
import os
print(os.getcwd())

# 相対パスでファイルを開いて書き込み
fruit_list = ['apple', 'orange', 'banana']
fruit = "\n".join(fruit_list)
with open('フルーツのリスト.txt', 'w') as f:
    f.write(fruit)

参考

Webサイト
Pythonで文字列やリストをファイルに書き込む
https://www.mathpython.cm/ja/python-file-write/
京都大学 プログラミング演習 Python 2019
https://repository.kulib.kyoto-u.ac.jp/dspace/handle/2433/245698

書籍
スラスラわかるPython、岩崎 圭 北川 慎治、株式会社 翔泳社(2017)

環境

OS : windows 10(64 bit)
Python version : 3.8.2
テキストエディタ : VSCode

いいなと思ったら応援しよう!