使用python-gitlab获取本地gitlab仓库project信息的方法
代码中有注释,直接看代码
#coding:utf8 #!/usr/bin/env python #@author: 9527 import gitlab import openpyxl import datetime class GitlabInfoget(): def __init__(self,queue02,Url,token):
#这里传入的是GUI界面的Frame中的队列,可以直接去掉 self.queue02 = queue02 #配置GitLab服务器访问地址和访问令牌 self.Url = Url self.token =token #调用登录接口 self.gl = gitlab.Gitlab(Url, private_token=token) def get_project_info(self): #向GUI界面Frame的队列中压入字符串 self.queue02.put("正在查询project信息") #获取项目信息list projects = self.gl.projects.list(all=True) return projects def get_each_project_info(self,projects): #向GUI界面Frame的队列中压入字符串 self.queue02.put("正在处理数据表头") #定义行列起始值 Info_row = 1 #行 Info_column = 1 #列 # 创建一个工作簿 self.workbook = openpyxl.Workbook() # 获取当前活动工作表 self.sheet = self.workbook.active #设定表头 write_in_excel_data0 = ["project名称","project层级", "projectID","project简介","web地址","成员信息"] #写入表头信息 for data in write_in_excel_data0: # 在第Info_row行第Info_column列写入数据 self.sheet.cell(row=Info_row,column=Info_column, value=data) #换列 Info_column+=1 #遍历获取到的项目信息 for project in projects:
#同上 self.queue02.put("\n正在写入第" + str(Info_row) +"个project数据\n") #换行 Info_row +=1 #重置列起始值 Info_column = 1 #列 #获取该项目所有成员信息(包括继承) member1 = project.members_all.list(get_all=True) #project名称 projectname = project.name #project名称 projectlevel = project.path_with_namespace #project的ID projectid = project.id #project简介 projectdescription = project.description #web访问地址 web_addr = project.web_url #数据归纳 write_in_excel_data1 = [str(projectname) , str(projectlevel) , str(projectid) ,str(projectdescription),str(web_addr)] for data in write_in_excel_data1: # 在第Info_row行第Info_column列写入数据 self.sheet.cell(row=Info_row,column=Info_column, value=data) #换列 Info_column+=1 #遍历该项目成员信息 for member in member1: #获取该成员信息的name,及姓名 member1name = member.name #获取该成员信息的username,及姓名 member1user = member.username #获取该成员信息的access_level,即接入权限 member1access_level = member.access_level #数据归纳 write_in_excel_data2 = [str(member1name),"-",str(member1user), "-",str(member1access_level)] write_in_excel_data2 = "\n".join(write_in_excel_data2) # 在第Info_row行第Info_column列写入数据 self.sheet.cell(row=Info_row, column=Info_column, value=write_in_excel_data2) #换列 Info_column+=1 today = datetime.date.today() filename_excel = "gitlab_projectINFO_"+str(today) + ".xlsx" self.workbook.save(filename_excel)
#同上 self.queue02.put("\n数据已整理存入Excel文件完毕,文件名:" + str(filename_excel)+"\n") # 释放连接 self.gl.session.close() return True ''' A = GitlabInfoget("192.168.1.1","test-Token") B = A.get_project_info() C = A.get_each_project_info(B) print(C) '''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-03-08 关于wx.panel中添加wx.button按钮无显示问题记录