Pythonツール ゲーム ドラッグアンドドロップ(単一ファイル)

PythonでCSVファイルをJSONファイルにドラッグアンドドロップで変換する方法

概要

CSVファイルをJSONファイルに変換する作業は、データ解析やWeb開発においてよく行われるタスクです。この記事では、PythonとTkinterを使用して、CSVファイルをドラッグアンドドロップで簡単にJSONファイルに変換する方法を紹介します。PythonのGUIライブラリであるTkinterを使用して直感的なインターフェースを提供し、誰でも簡単に使用できるツールを作成します。

使用例

例えば、以下のようなCSVファイルをJSONファイルに変換したい場合を考えます。

CSVファイル内容:

japanese,romaji
りんご,ringo
ばなな,banana
さくらんぼ,sakuranbo
なし,nashi
ぶどう,budou

このCSVファイルを以下のようなJSONファイルに変換します。

{
"words": [
{"japanese": "りんご", "romaji": "ringo"},
{"japanese": "ばなな", "romaji": "banana"},
{"japanese": "さくらんぼ", "romaji": "sakuranbo"},
{"japanese": "なし", "romaji": "nashi"},
{"japanese": "ぶどう", "romaji": "budou"}
]
}

必要なPythonライブラリとインストール方法

このツールを使用するためには、以下のPythonライブラリが必要です。

  • tkinter
  • tkinterdnd2
  • pandas

これらのライブラリをインストールするために、以下のコマンドを使用します。

pip install tkinterdnd2 pandas

使用手順

  1. 必要なパッケージをインストールします。
    pip install tkinterdnd2 pandas
  2. プログラムコードをコピーして、メモ帳などのテキストエディタに貼り付けます。
  3. ファイル名を csv_to_json_converter.py として保存します。
  4. コマンドラインまたはターミナルを開き、ファイルを保存したディレクトリに移動します。
  5. 次のコマンドを実行してスクリプトを起動します。
    python csv_to_json_converter.py
  6. 開いたウィンドウにCSVファイルをドラッグアンドドロップするか、クリックしてファイルを選択します。
  7. JSONファイルが自動的に生成され、同じディレクトリに保存されます。

注意点

  • ファイルパスに日本語や特殊文字が含まれていると、正常に動作しない場合があります。その場合は、ファイルパスを英数字のみに変更してください。
  • CSVファイルの形式が正しくない場合、エラーが発生することがあります。事前にCSVファイルの形式を確認してください。

プログラム

下記のコードをメモ帳などに丸々コピーしてpythonファイル(csv_to_json_converter.py)にしてください。

import tkinter as tk
from tkinterdnd2 import TkinterDnD, DND_FILES
from tkinter import filedialog, messagebox
import pandas as pd
import json

def convert_csv_to_json(csv_file_path):
try:
# CSVファイルを読み込む
df = pd.read_csv(csv_file_path)

# データフレームを辞書のリストに変換
words_list = df.to_dict(orient='records')

# 最終的なJSON構造を作成
result = {"words": words_list}

# JSONファイルとして保存
json_file_path = csv_file_path.replace('.csv', '.json')
with open(json_file_path, 'w', encoding='utf-8') as json_file:
json.dump(result, json_file, ensure_ascii=False, indent=4)

messagebox.showinfo("成功", f"JSONファイルが作成されました:\n{json_file_path}")
except Exception as e:
messagebox.showerror("エラー", str(e))

def on_drop(event):
csv_file_path = event.data
csv_file_path = csv_file_path.strip('{}') # Windowsのファイルパスから{}を削除
convert_csv_to_json(csv_file_path)

def select_file():
file_path = filedialog.askopenfilename(filetypes=[("CSVファイル", "*.csv")])
if file_path:
convert_csv_to_json(file_path)

# メインウィンドウを作成
root = TkinterDnD.Tk()
root.title("CSVからJSONへの変換ツール")

# ドロップエリアのフレームを作成
drop_frame = tk.Frame(root, width=400, height=200, bg="lightgrey")
drop_frame.pack(padx=10, pady=10)

# ドロップエリアにラベルを作成
label = tk.Label(drop_frame, text="ここにCSVファイルをドラッグ&ドロップ\nまたはクリックしてファイルを選択", bg="lightgrey")
label.pack(expand=True)

# ドロップイベントをバインド
drop_frame.drop_target_register(DND_FILES)
drop_frame.dnd_bind('<<Drop>>', on_drop)

# クリックイベントをファイルダイアログを開くようにバインド
drop_frame.bind("<Button-1>", lambda event: select_file())

# メインイベントループを開始
root.mainloop()

あるいは、下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。

まとめ

この記事では、PythonとTkinterを使用してCSVファイルをJSONファイルにドラッグアンドドロップで変換する方法を紹介しました。このツールを使用することで、データ変換の作業が簡単かつ迅速に行えるようになります。Pythonの強力なライブラリを活用し、作業効率を向上させましょう。

-Pythonツール, ゲーム, ドラッグアンドドロップ(単一ファイル)