使用Python3将manifest.xml转为excel供查看
来源:互联网 发布:世界局势知乎 编辑:程序博客网 时间:2024/06/05 06:02
#!/usr/bin/env python3from xml.dom.minidom import parseimport xml.dom.minidomimport os,os.pathimport xlwtimport sys, getopt#存放所有数据,二位数据,到时候将次二维数组数据直接写入excel中projectsExcel=[]projectsExcel.append(['Manifest','工程名称','仓库地址','分支'])def usage(): print('ManifestParse.py usage:') print('-i: 指定Manifest存放的文件夹')#数据写入xlsdef write_to_excel(excelFileName,sheetName,data): '''Write content to a new excel''' new_workbook=xlwt.Workbook() newSheet=new_workbook.add_sheet(sheetName) i=j=0 for x in range(0,len(data)): for y in data[i]: newSheet.write(i,j,y) j+=1 i+=1 j=0 if not os.path.exists('parse_results'): os.makedirs('parse_results') new_workbook.save(r'parse_results/'+excelFileName+'.xls')def parse_manifest(manifestName,manifestPath): # 使用minidom解析器打开 XML 文档 DOMTree = xml.dom.minidom.parse(manifestPath) collection = DOMTree.documentElement remotes = collection.getElementsByTagName("remote") remoteDict={} for remote in remotes: remoteDict[remote.getAttribute('name')]=remote.getAttribute('fetch') default = collection.getElementsByTagName("default")[0] #默认远程地址 defaultRemote=remoteDict.get(default.getAttribute('remote')) #默认分支 defaultRevision=default.getAttribute('revision') #获取所有的project属性 projects = collection.getElementsByTagName("project") for x in projects: #获取工程名 projectName = x.getAttribute('name') #获取工程地址 projectRemoteKey=x.getAttribute('remote') if projectRemoteKey ==None: projectRemoteKey=default.getAttribute('remote') projectRemote=remoteDict.get(projectRemoteKey) if projectRemote==None: projectRemote=defaultRemote #获取工程分支 projectBranch=x.getAttribute('revision') if projectBranch =='': projectBranch=defaultRevision #应用分支数据追加到总的数据文件上 one=[manifestName,projectName,projectRemote+'/'+projectName,projectBranch] projectsExcel.append(one) print(manifestName,' ',projectName,' ',projectRemote+'/'+projectName,' ',projectBranch)def main(manifestDir): for root, dirs, files in os.walk(manifestDir,topdown=False): for name in files: path = os.path.join(root,name) if path.endswith('xml'): print(path) parse_manifest(name,path) #统计结果写入excel write_to_excel('统计结果','应用分支详情',projectsExcel)if __name__ == '__main__': manifestDir=None try: opts, args = getopt.getopt(sys.argv[1:],'i:') except getopt.GetoptError: usage() sys.exit(2) for o,a in opts: print(o,a) if o == '-i': manifestDir=a if manifestDir == None: usage() else: main(manifestDir)
阅读全文
0 0
- 使用Python3将manifest.xml转为excel供查看
- Python 将Excel转为Xml
- 使用python将excel转为lua文件
- 【JS】使用javascript将xml转为json
- 将xml转为json
- php将xml 转为数组
- PHP将JSON转为XML
- xStream 将xml转为javaBean
- 使用office2010将Excel转xml
- 使用ADO.net将数据导出到Excel并提供下载
- 使用ADO.net将数据导出到Excel并提供下载
- 使用ADO.net将数据导出到Excel并提供下载
- 使用ADO.net将数据导出到Excel并提供下载
- 将Excel公式结果转为数值
- 将excel中内容转为plist文件
- 将excel中内容转为plist文件
- PPT2007将Excel图表转为图片
- excel中使用VBA将单元格的内容转为多行
- springboot 高版本后继续使用log4j的解决方法
- (待完善)Ubuntu 16.04下1080Ti显卡的安装方式
- 标准库类型string
- 17ICPC南宁 G I 计算几何+暴力
- case/casez/casex
- 使用Python3将manifest.xml转为excel供查看
- Android Studio-Didn't find class XXX on path: DexPathList [zip file "/data/app/packagename/base.apk]
- LeetCode 23:Merge k Sorted Lists 解题与思考
- 西瓜书读书笔记(一)
- 阿里云centos7 下安装svn服务器教程笔记
- day11-jQuery事件
- linux 内核驱动--Platform Device和Platform_driver注册过程
- 高级C语言教程
- JS类型转换