Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os,sys
- import argparse
- import pandas as pd
- import ntpath
- import dicttoxml
- import xml.etree.ElementTree as ET
- import xmltodict
- def path_leaf(path):
- head, tail = ntpath.split(path)
- return tail or ntpath.basename(head)
- def read(path,ext):
- if ext=='.csv':
- return pd.read_csv(path)
- elif ext=='.xls':
- if args.sheet is None:
- print("No Sheet Name specified")
- sys.exit(0)
- else:
- return pd.read_excel(path,sheet_name=args.sheet)
- elif ext=='.json':
- return pd.read_json(path)
- elif ext=='.xml':
- tree = ET.parse(path)
- root = tree.getroot()
- get_range = lambda col: range(len(col))
- data_dict = [{r[i].tag:r[i].text for i in get_range(r)} for r in root]
- for i in range(len(data_dict)):
- for name in root[i].attrib:
- data_dict[i].update({name:root[i].attrib[name]})
- return pd.DataFrame.from_dict(data_dict)
- def write(data,path,ext):
- if ext=='.csv':
- data.to_csv(path,encoding='utf-8',index=False)
- elif ext=='.xls':
- data.to_excel(path,sheet_name="Sheet1",index=False)
- elif ext=='.json':
- data.to_json(path,orient = "records")
- elif ext=='.xml':
- data_dict=data.to_dict(orient='records')
- xml_data = dicttoxml.dicttoxml(data_dict).decode()
- with open(path, "w+") as f:
- f.write(xml_data)
- parser=argparse.ArgumentParser()
- parser.add_argument('-c','--conv',action='store_true')
- parser.add_argument('-db','--database',action='store_true')
- parser.add_argument('-sht','--sheet',nargs='?')
- parser.add_argument('-s','--source',nargs='*')
- parser.add_argument('-d','--destination',nargs='*')
- args = parser.parse_args()
- if args.conv :
- if args.database:
- sys.exit()
- else:
- for i in range(len(args.source)):
- src_name,src_ext=os.path.splitext(path_leaf(args.source[i]))
- dst_name,dst_ext=os.path.splitext(path_leaf(args.destination[i]))
- write(read(args.source[i],src_ext),args.destination[i],dst_ext)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement