背景
業務の中でCSVファイルをJSONに変換したいなーというタイミングがありました。
ググったところ、そのニーズを満たしてくれるサイトはいくつか見つかりましたが、社内で扱うデータを外部のウェブサイトに入力するのは、セキュリティの観点から少し不安を感じていました。
(さらに調べてみると、Visual Studio Code(VSCode)の拡張機能を使えば簡単に変換できる方法もあることが分かりました。ただ今回の題材はそんなに難しくないんではないかと思ったので、自分自身で作ってみました。)
Pythonを使って実装
以下に、CSVファイルをJSONファイルに変換するためのPythonプログラムを紹介します。
このプログラムはコマンドライン引数からCSVファイルのパスとJSONファイルのパスを受け取り、CSVファイルの内容を読み取りJSONファイルに変換します。
import csv
import json
import argparse
# コマンドライン引数の解析
parser = argparse.ArgumentParser(description='Convert CSV to JSON.')
parser.add_argument('csv_file', type=str, help='Path to the CSV file')
parser.add_argument('json_file', type=str, help='Path to the output JSON file')
args = parser.parse_args()
csv_file = args.csv_file
json_file = args.json_file
# CSVファイルを読み込む
with open(csv_file, mode='r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
data = [row for row in csv_reader]
# JSONファイルに書き込む
with open(json_file, mode='w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
print(f"CSVファイル '{csv_file}' を JSONファイル '{json_file}' に変換しました。")
プログラムの説明
- argparseモジュールを使用して、コマンドライン引数を解析します
-
csvモジュールを使用して、CSVファイルを読み込みます。
csv.DictReader
を使うことで、ヘッダー行を自動的に辞書のキーとして扱うことができます - 取得したデータをリストに変換し、jsonモジュールを使用してJSONファイルに書き込みます
- 最後に、変換が完了したことを知らせるメッセージをコンソールに出力します
実行方法
このプログラムを実行するためのコマンドは以下の通りです。
python convert.py input.csv output.json
input.csvは変換元のCSVファイルのパス、output.jsonは変換先のJSONファイルのパスです。
実行に成功すると、以下のメッセージが表示され、指定されたパスに変換されたJSONファイルが存在します。
CSVファイル 'input.csv' を JSONファイル 'output.json' に変換しました。
実行環境
このプログラムを実行した環境は以下のとおりです:
- Python: Python 3.9.19
- WSL2(Windows Subsystem for Linux): 2.3.24.0
感想
pythonはサクっと書けてサクっと実行できていいですね。
(GitHub Copilotに誘導されながらだと特に詰まるところもありませんでした)
もし同じようなニーズがある方は、このプログラムを参考にしてみてください。
思いのほかシンプルに作ることができるので、ぜひ挑戦してみてください。