[Python] 206 JSON CSV相互コンバータのexe化

どうせなら相互に変換できるツールの方が便利だろうと考え、前回のコードに加筆しました。

CSVファイルはExcelで開くため文字コードはshift-JIS、JSONファイルはVScodeなのでUTF-8とややこしめです。

ファイルパスの拡張子で変換方法を判断します。

# 途中から

if '.json' in path:
    # JSONファイルをデータフレームとして読み込む
    df = pd.read_json(path,lines=True)

    # 変換先のCSVファイル名を作成する
    csv_file = path.split('.')[0] + '.csv'

    # データフレームをCSVファイルに変換する
    df.to_csv(csv_file, encoding='Shift_JIS')

elif '.csv' in path:
    # shift-JISからUTF-8への変換
    utf_file = path.split('.')[0] + '_utf' + '.csv'
    cmd = "nkf -w %s > %s" % (path, utf_file)
    subprocess.call(cmd, shell=True)

    # CSVファイルを辞書型として読み込み
    json_list = []
    with open(utf_file,'r') as f:
        reader = csv.DictReader(f)
        for row in reader:
            json_list.append(row)

    # 変換先のJSONファイル名を作成する
    json_file = path.split('.')[0] + '.json'

    # JSONファイル作成
    with codecs.open(json_file, 'w','utf-8') as f:
        json.dump(json_list,f,ensure_ascii=False)

root.mainloop()