MENU

Pythonでファイルを読み書きする基本|txt・csv・jsonの使い分け

当ページのリンクには広告(PR)が含まれていることがあります。
Pythonでファイルを読み書きする基本|txt・csv・jsonの使い分けのアイキャッチ

メモを保存したいのか、売上一覧を渡したいのか、設定を読み込みたいのかで、向くファイル形式は違います。拡張子だけを替えてもデータの形は変わらないので、先に何を一件として扱うかを決めます。

目次

txt・csv・jsonの使い分け

一続きの文章はtxt、同じ列を持つ明細はcsv、項目名と値を組み合わせる設定はjsonが扱いやすい形です。たとえば作業メモはtxt、店舗別の実績はcsv、保存先と通知の設定はjsonにできます。用途が変われば、読み書きに使う処理も変えます。

テキストファイルでは文字コードを明示します。日本語が読めないときにerrors="ignore"で消して進めると、欠けた値のまま処理が続きます。元のファイルを残し、作成元の文字コードを調べます。

三つの形式を保存する例

次は架空の小さなデータを、それぞれ別ファイルへ保存する例です。空の作業フォルダーで実行してください。xモードを使うため、同名ファイルがあると停止します。

import csv
import json

with open("memo.txt", "x", encoding="utf-8") as out:
    out.write("入力件数を確認する\n")

with open("shops.csv", "x", encoding="utf-8-sig", newline="") as out:
    writer = csv.writer(out)
    writer.writerow(["店舗", "件数"])
    writer.writerow(["東京", 3])

with open("settings.json", "x", encoding="utf-8") as out:
    json.dump({"output_dir": "reports", "notify": False},
              out, ensure_ascii=False, indent=2)

with open("settings.json", encoding="utf-8") as src:
    settings = json.load(src)
print(settings["output_dir"])

実行後は三つのファイルができ、画面にはreportsと出ます。withの区間を抜けるとファイルが閉じられます。CSVではnewline=""を付け、行の区切りをcsvモジュールに任せます。utf-8-sigはBOM付きUTF-8で、Excelへ渡すCSVで選ぶ方法の一つです。

上書きと追記の使い分け

wモードは既存ファイルを開いた時点で内容を切り詰めます。書き込みに失敗したら前の内容へ戻る、という指定ではありません。元データを守りたい作業では、別名で出力し、確認後に入れ替える手順を用意します。

aモードは末尾への追記です。txtの作業記録には使えても、普通のJSONファイルへjson.dumpを繰り返すと、複数の値が連なり、一つのJSON文書として読めなくなります。JSONを更新するときは、全体を読み、値を変更し、新しいファイルへ書き出す方法から始めます。

この例も三つの保存を一つの取引として扱ってはいません。途中で止まれば、それ以前のファイルは残ります。複数ファイルを作る実務では、作成済みの名前と失敗した場所を記録してください。

保存後に読むもの

ファイルがあるかだけでなく、読み直した値と元データが合うかを確認します。csvなら列名と行数、jsonなら必要なキーと型、txtなら改行と日本語の表示を見ます。保存した場所を絶対パスで控えると、別のフォルダーへ出力していた場合にも気づきやすくなります。

関連する作業

文字の整形やCSV集計へ進む場合は、次の記事がつながります。

参考資料

この記事を書いた人

Watanabeのアバター Watanabe サイト運営者

2020年よりブログ開始。
SEOが思いのほか性にあっていたようで現在に至る。
モットーは「勝率の高い選択をする」
AIは活用するが吉、最後は人間が息を吹き込む。
アートと科学を追求し、日々精進。
―――
収益:6~7桁をウゴウゴ。
サイト:ペラサイト~中規模サイトまで運営中。
案件:1000円以上の案件をメインに取組中。
打ち手:ブラックSEO~ホワイトSEOまで
―――

目次