|
|
@@ -0,0 +1,54 @@
|
|
|
+import json
|
|
|
+import sys
|
|
|
+import csv
|
|
|
+
|
|
|
+def load(path):
|
|
|
+ data = []
|
|
|
+ with open(path, 'r', encoding='utf8') as fp:
|
|
|
+ reading = csv.DictReader(fp)
|
|
|
+ for row in reading:
|
|
|
+ data.append(row['JSON'])
|
|
|
+ return data
|
|
|
+
|
|
|
+def save(saving_csv, name_csv):
|
|
|
+ with open(name_csv + '.csv', 'w', encoding= 'utf8', newline='') as f:
|
|
|
+ writer = csv.DictWriter(f, fieldnames=['JSON'])
|
|
|
+ writer.writeheader()
|
|
|
+ for radek in saving_csv:
|
|
|
+ writer.writerow({'JSON': radek})
|
|
|
+
|
|
|
+def delete(csv_json, clear_json):
|
|
|
+ for s in csv_json:
|
|
|
+ if isinstance(s, str) and ',' in s:
|
|
|
+ idx = s.rfind(',')
|
|
|
+ clear_json.add(s[:idx])
|
|
|
+ else:
|
|
|
+ clear_json.add(s)
|
|
|
+
|
|
|
+def loadcsv(pattern_csv, target_csv):
|
|
|
+ missing = set()
|
|
|
+ overstay = set()
|
|
|
+ pattern_jsons = set(json.dumps(json.loads(x), sort_keys=True) for x in pattern_csv)
|
|
|
+ target_jsons = set(json.dumps(json.loads(x), sort_keys=True) for x in target_csv)
|
|
|
+ missing_jsons = pattern_jsons - target_jsons
|
|
|
+ overstay_jsons = target_jsons - pattern_jsons
|
|
|
+ delete(missing_jsons, missing)
|
|
|
+ delete(overstay_jsons, overstay)
|
|
|
+ save(missing, 'pridat')
|
|
|
+ save(overstay, 'odebrat')
|
|
|
+
|
|
|
+def main():
|
|
|
+ if len(sys.argv) < 3:
|
|
|
+ print('Chybi cesta k csv souborum.', file=sys.stderr)
|
|
|
+ print('Zadejte takto: <nazev_programu.py> <cesta k vzorove.csv> <cesta k cilove.csv>', file=sys.stderr)
|
|
|
+ sys.exit(1)
|
|
|
+ path_pattern = sys.argv[1]
|
|
|
+ path_target = sys.argv[2]
|
|
|
+ pattern = load(path_pattern)
|
|
|
+ target = load(path_target)
|
|
|
+
|
|
|
+ loadcsv(pattern, target)
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|
|
|
+ sys.exit(0)
|