| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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)
|