Repository for Petra's work at ampli Jan-Feb 2019

pickletocsv.py 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from argparse import ArgumentParser, FileType
  2. from sys import stdout
  3. from signal import signal, SIGPIPE, SIG_DFL
  4. import pandas as p
  5. def main():
  6. parser = ArgumentParser(description='Transform a "pickle" to a csv file')
  7. parser.add_argument(dest="input", help = "input pickle path", type = FileType('rb'))
  8. parser.add_argument(dest="output", nargs="?", help = "output csv path", type = FileType('w'))
  9. parser.add_argument("-r", "--row-names", dest = "rownames", help = "include row names in csv; "
  10. "needed to faithfully reproduce some dataframes. "
  11. "Use -v to check information about dataframe", action = "store_true")
  12. parser.add_argument("-v", "--verbose", dest = "verbose", action ="store_true",
  13. help="print information about dataframe and process")
  14. args = parser.parse_args()
  15. if args.output is None:
  16. args.output = stdout
  17. if args.verbose:
  18. print("Reading pickle")
  19. ptc = p.read_pickle(args.input)
  20. if args.verbose:
  21. print(ptc.info())
  22. print("Saving as csv")
  23. signal(SIGPIPE, SIG_DFL) # Prevent broken pipe errors when piping to less or head
  24. ptc.to_csv(args.output, index = args.rownames)
  25. args.input.close()
  26. args.output.close()
  27. if __name__ == "__main__":
  28. main()