.local/bin/csv2json
[raw]
[blame]
1#!/usr/bin/env python3
2
3import argparse
4import json
5import sys
6from csv import DictReader
7from typing import Any, Dict, List, Optional, TextIO
8
9
10def csv2json(fp: TextIO, fields: Optional[List[str]]) -> None:
11 reader = DictReader(fp, fieldnames=fields)
12
13 for row in reader:
14 json.dump(row, sys.stdout)
15 print()
16
17
18if __name__ == '__main__':
19 parser = argparse.ArgumentParser()
20 parser.add_argument(
21 'file', nargs='?', type=argparse.FileType('r'), default=sys.stdin
22 )
23 parser.add_argument('--field', dest='fields', action='append')
24 args = parser.parse_args()
25
26 csv2json(args.file, args.fields)