- commit
- a45726a5b6b4a738dba703197128510e3ffe8353
- parent
- 90dbef4a0ebd1328c84168d5fa33eaa512742b92
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2014-04-21 00:10
concat multiple infiles
Diffstat
| M | cctool.py | 34 | ++++++++++++++++++---------------- |
1 files changed, 18 insertions, 16 deletions
diff --git a/cctool.py b/cctool.py
@@ -23,7 +23,6 @@ 23 23 # TODO 24 24 # - type conversion (especially dates) 25 25 # - filter/convert for valid fields26 -1 # - doc27 26 # - tests 28 27 # - merge 29 28 # - filter @@ -325,20 +324,12 @@ if __name__ == '__main__': 325 324 metavar='FORMAT', dest='informat') 326 325 parser.add_argument('--to', '-t', choices=outformats.keys(), 327 326 metavar='FORMAT', dest='outformat')328 -1 parser.add_argument('input', nargs='?', metavar='FILE')-1 327 parser.add_argument('input', nargs='*', default=['-'], metavar='FILE') 329 328 parser.add_argument('--output', '-o', metavar='FILENAME') 330 329 parser.add_argument('--sort', '-s', metavar='SORTKEY', 331 330 help="sort entries by this field") 332 331 args = parser.parse_args() 333 332334 -1 if args.informat is None and args.input is not None:335 -1 ext = args.input.split(os.path.extsep)[-1]336 -1 if ext in informats:337 -1 args.informat = ext338 -1 if args.informat is None:339 -1 print("Missing input format")340 -1 sys.exit(1)341 -1342 333 if args.outformat is None and args.output is not None: 343 334 ext = args.output.split(os.path.extsep)[-1] 344 335 if ext in outformats: @@ -350,14 +341,25 @@ if __name__ == '__main__': 350 341 reload(sys) 351 342 sys.setdefaultencoding('utf-8') 352 343353 -1 infile = sys.stdin if args.input is None else open(args.input)354 344 outfile = sys.stdout if args.output is None else open(args.output) 355 345356 -1 try:357 -1 data = informats[args.informat]().load(infile)358 -1 except Exception as e:359 -1 log.error(e)360 -1 sys.exit(1)-1 346 data = [] -1 347 for fn in args.input: -1 348 ext = fn.split(os.path.extsep)[-1] -1 349 if args.informat is not None: -1 350 informat = args.informat -1 351 elif ext in informats: -1 352 informat = ext -1 353 else: -1 354 print("Missing input format") -1 355 sys.exit(1) -1 356 -1 357 infile = sys.stdin if fn == '-' else open(fn) -1 358 try: -1 359 data += informats[informat]().load(infile) -1 360 except Exception as e: -1 361 log.error(e) -1 362 sys.exit(1) 361 363 362 364 if args.sort is not None: 363 365 data = sorted(data, key=lambda x: x[args.sort])