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)