Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv, sys
- def main(fielddef=None, *inputs):
- if fielddef is None or len(inputs) == 0:
- sys.stderr.write("usage: %s <field_def> input_file [ ... ]\n" % sys.argv[0])
- return 1
- fields = map(lambda x: int(x) - 1, fielddef.split(','))
- fh = [open(f) for f in inputs]
- readers = []
- for f in fh:
- dialect = csv.Sniffer().sniff(f.readline())
- f.seek(0)
- readers.append(csv.reader(f,dialect))
- writer = csv.writer(sys.stdout)
- for row in zip(*readers):
- output = []
- for fileno, filerow in enumerate(row):
- for i in fields:
- try:
- output.append(filerow[i])
- except IndexError:
- sys.stderr.write("* Error: Could not find column %d in the following row from %s:\n" % (i + 1, inputs[fileno]))
- sys.stderr.write("* %s\n" % str(filerow))
- return 1
- writer.writerow(output)
- map(lambda f: f.close(), fh)
- return 0
- if __name__ == "__main__":
- sys.exit(main(*sys.argv[1:]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement