Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/python | |
| 2 # Copyright 2016 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 """Converts CSV files to machine-readable JSON.""" | |
|
qyearsley
2016/07/19 22:17:28
I think it would be helpful give an example invoca
| |
| 7 | |
| 8 import argparse | |
| 9 import csv | |
| 10 import json | |
| 11 import sys | |
| 12 | |
| 13 | |
| 14 def main(argv): | |
| 15 parser = argparse.ArgumentParser() | |
| 16 parser.add_argument('filename', metavar='filename', | |
| 17 help='The path to the input CSV file.') | |
| 18 parser.add_argument('-o', '--output', | |
| 19 help='The output file name.') | |
| 20 parser.add_argument('-f', '--fieldnames', nargs='*', | |
|
qyearsley
2016/07/19 22:17:28
fieldnames -> field-names?
| |
| 21 help='The ordered fieldnames of the CSV file. Defaults t o first row.') | |
|
qyearsley
2016/07/19 22:17:28
fieldnames -> field names
| |
| 22 parser.add_argument('-s', '--skip-keys', nargs='*', | |
| 23 help='Fields that should be skipped.') | |
| 24 args = parser.parse_args() | |
| 25 convert_csv_to_json(args.filename, args.output, args.fieldnames, args.skip_k eys) | |
| 26 | |
| 27 | |
| 28 def convert_csv_to_json(filename, output_filename=None, field_names=None, skip_k eys=None): | |
| 29 out = output_filename or (filename + '.json') | |
| 30 dict_list = [] | |
| 31 json_file = open(out, 'w') | |
| 32 with open(filename) as csv_file: | |
| 33 reader = csv.DictReader(csv_file, fieldnames=field_names) | |
|
qyearsley
2016/07/19 22:17:28
fieldnames -> field_names
| |
| 34 for row in reader: | |
| 35 if skip_keys: | |
| 36 for s in skip_keys: | |
| 37 del row[s] | |
| 38 dict_list.append(row) | |
| 39 json.dump(dict_list, json_file, indent=4) | |
| 40 | |
| 41 | |
| 42 if __name__ == '__main__': | |
| 43 main(sys.argv[1:]) | |
|
qyearsley
2016/07/19 22:17:28
four-space indent
| |
| OLD | NEW |