Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. import os,sys
  2. import argparse
  3. import pandas as pd
  4. import ntpath
  5. import dicttoxml
  6. import xml.etree.ElementTree as ET
  7. import xmltodict
  8.  
  9. def path_leaf(path):
  10. head, tail = ntpath.split(path)
  11. return tail or ntpath.basename(head)
  12.  
  13. def read(path,ext):
  14. if ext=='.csv':
  15. return pd.read_csv(path)
  16. elif ext=='.xls':
  17. if args.sheet is None:
  18. print("No Sheet Name specified")
  19. sys.exit(0)
  20. else:
  21. return pd.read_excel(path,sheet_name=args.sheet)
  22. elif ext=='.json':
  23. return pd.read_json(path)
  24. elif ext=='.xml':
  25. tree = ET.parse(path)
  26. root = tree.getroot()
  27. get_range = lambda col: range(len(col))
  28. data_dict = [{r[i].tag:r[i].text for i in get_range(r)} for r in root]
  29. for i in range(len(data_dict)):
  30. for name in root[i].attrib:
  31. data_dict[i].update({name:root[i].attrib[name]})
  32. return pd.DataFrame.from_dict(data_dict)
  33.  
  34.  
  35. def write(data,path,ext):
  36. if ext=='.csv':
  37. data.to_csv(path,encoding='utf-8',index=False)
  38. elif ext=='.xls':
  39. data.to_excel(path,sheet_name="Sheet1",index=False)
  40. elif ext=='.json':
  41. data.to_json(path,orient = "records")
  42. elif ext=='.xml':
  43. data_dict=data.to_dict(orient='records')
  44. xml_data = dicttoxml.dicttoxml(data_dict).decode()
  45. with open(path, "w+") as f:
  46. f.write(xml_data)
  47.  
  48. parser=argparse.ArgumentParser()
  49. parser.add_argument('-c','--conv',action='store_true')
  50. parser.add_argument('-db','--database',action='store_true')
  51. parser.add_argument('-sht','--sheet',nargs='?')
  52. parser.add_argument('-s','--source',nargs='*')
  53. parser.add_argument('-d','--destination',nargs='*')
  54. args = parser.parse_args()
  55. if args.conv :
  56. if args.database:
  57. sys.exit()
  58. else:
  59. for i in range(len(args.source)):
  60. src_name,src_ext=os.path.splitext(path_leaf(args.source[i]))
  61. dst_name,dst_ext=os.path.splitext(path_leaf(args.destination[i]))
  62. write(read(args.source[i],src_ext),args.destination[i],dst_ext)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement