Advertisement
Guest User

Untitled

a guest
Jun 28th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. import csv, sys
  2.  
  3. def main(fielddef=None, *inputs):
  4.  
  5. if fielddef is None or len(inputs) == 0:
  6. sys.stderr.write("usage: %s <field_def> input_file [ ... ]\n" % sys.argv[0])
  7. return 1
  8.  
  9. fields = map(lambda x: int(x) - 1, fielddef.split(','))
  10.  
  11. fh = [open(f) for f in inputs]
  12. readers = []
  13.  
  14. for f in fh:
  15. dialect = csv.Sniffer().sniff(f.readline())
  16. f.seek(0)
  17. readers.append(csv.reader(f,dialect))
  18.  
  19. writer = csv.writer(sys.stdout)
  20.  
  21. for row in zip(*readers):
  22. output = []
  23. for fileno, filerow in enumerate(row):
  24. for i in fields:
  25. try:
  26. output.append(filerow[i])
  27. except IndexError:
  28. sys.stderr.write("* Error: Could not find column %d in the following row from %s:\n" % (i + 1, inputs[fileno]))
  29. sys.stderr.write("* %s\n" % str(filerow))
  30. return 1
  31. writer.writerow(output)
  32.  
  33. map(lambda f: f.close(), fh)
  34.  
  35. return 0
  36.  
  37. if __name__ == "__main__":
  38. sys.exit(main(*sys.argv[1:]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement