Advertisement
Guest User

Untitled

a guest
Aug 20th, 2017
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. """
  2. Parse fullOrders.csv downloaded from Bittrex account.
  3.  
  4. Requirements::
  5.  
  6. pip install dateparser
  7.  
  8. """
  9.  
  10. import csv
  11. import sys
  12. from subprocess import check_call, CalledProcessError
  13.  
  14. from dateparser import parse
  15.  
  16.  
  17. field_mapping = {
  18. 'Opened': {'name': 'TimeStamp', 'ftype': parse},
  19. 'Closed': {'name': 'Closed', 'ftype': parse},
  20. 'Price': {'name': 'Price', 'ftype': float},
  21. 'Quantity': {'name': 'Quantity', 'ftype': float},
  22. 'Exchange': {'name': 'Exchange', 'ftype': str},
  23. 'Type': {'name': 'Type', 'ftype': str},
  24. 'CommissionPaid': {'name': 'Comission', 'ftype': float},
  25. 'Limit': {'name': 'Limit', 'ftype': float},
  26. 'OrderUuid': {'name': 'OrderUuid', 'ftype': str}
  27. }
  28.  
  29. PATH_TO_FILE = sys.argv[1]
  30.  
  31. # workaround for _csv.Error: line contains NULL byte
  32. try:
  33. check_call("sed -i -e 's|\\x0||g' {}".format(PATH_TO_FILE), shell=True)
  34. except CalledProcessError as err:
  35. print(err)
  36.  
  37. # parse csv
  38. with open(PATH_TO_FILE, 'r') as f:
  39. reader = csv.DictReader(f)
  40. orders = []
  41. for row in reader:
  42. order = {}
  43. for key in row.keys():
  44. fmap = field_mapping.get(key)
  45. real_key = fmap.get('name')
  46. order[real_key] = fmap.get('ftype')(row.get(key))
  47. orders.append(order)
  48.  
  49. print('Found {0} orders.'.format(len(orders)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement