kanekunのメモ

AIが作ったプログラムのバックアップ

PythonでCSV比較(GPT-4Turbo)

import csv
import sys

def compare_csv(file1, file2):
    # 辞書型で行を管理するための変数
    rows1 = {}
    rows2 = {}

    # ファイル1の内容を読み込んで辞書型に格納
    with open(file1, 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            key = row[0]
            values = row[1:]
            rows1[key] = values

    # ファイル2の内容を読み込んで辞書型に格納
    with open(file2, 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            key = row[0]
            values = row[1:]
            rows2[key] = values

    # 追加、変更、削除、同一の行を格納するリスト
    added =
    updated =

    deleted =
    same =

    # ファイル1とファイル2の行を比較して結果を格納
    for key in rows1:
        if key not in rows2:
            added.append(key + ',' + ','.join(rows1[key]))
        elif rows1[key] != rows2[key]:
            updated.append(key + ',' + ','.join(rows1[key]))
        else:
            same.append(key + ',' + ','.join(rows1[key]))

    for key in rows2:
        if key not in rows1:
            deleted.append(key + ',' + ','.join(rows2[key]))

    # 結果をファイルに出力
    with open('added.csv', 'w') as f:
        for row in added:
            f.write(row + '\n')

    with open('updated.csv', 'w') as f:
        for row in updated:
            f.write(row + '\n')

    with open('deleted.csv', 'w') as f:
        for row in deleted:
            f.write(row + '\n')

    with open('same.csv', 'w') as f:
        for row in same:
            f.write(row + '\n')

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('引数の数が正しくありません。')
        sys.exit(1)

    file1 = sys.argv[1]
    file2 = sys.argv[2]
    compare_csv(file1, file2)