""" Split account-based CSV list by bank ID """ import os import sys import csv from collections import defaultdict if __name__ == "__main__": argv = sys.argv if len(argv) < 3: print("Usage: python3 %s [InputCSV] [AccountCSV]" % argv[0]) exit(1) input_csv = argv[1] acct_csv = argv[2] work_dir = os.path.dirname(input_csv) base_path, _ = os.path.splitext(input_csv) acct_bank = dict() bank_acct = defaultdict(set) with open(acct_csv, "r") as rf: reader = csv.reader(rf) header = next(reader) col_idx = {name: i for i, name in enumerate(header)} acct_idx = col_idx["acct_id"] bank_idx = col_idx["bank_id"] for row in reader: acct_id = row[acct_idx] bank_id = row[bank_idx] acct_bank[acct_id] = bank_id bank_acct[bank_id].add(acct_id) print("Loaded account list CSV file %s" % acct_csv) for bank_id, accts in bank_acct.items(): output_csv = base_path + "." + bank_id + ".csv" wf = open(output_csv, "w") writer = csv.writer(wf) with open(input_csv, "r") as rf: reader = csv.reader(rf) header = next(reader) writer.writerow(header) for row in reader: acct_id = row[0] if acct_id in accts: writer.writerow(row) wf.close() print("Extracted %d accounts in the bank %s from %s to %s" % (len(accts), bank_id, input_csv, output_csv))