代码中有注释,直接看代码

#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)
'''

使用python-gitlab获取本地gitlab仓库project信息的方法的更多相关文章

  1. Python中获取异常(Exception)信息

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序 ...

  2. 用python+selenium从百度获取本地明日的天气信息并根据温度情况设置提醒

    从百度天气获取当地明天的天气情况,如果明天下雨,请发送邮件通知全体同事带伞, 如果明天气温低于10度,请邮件提醒同事注意保暖,如果气温高于30度则提醒同事注意高温. 假设存在发送邮件的方法self.s ...

  3. Python实例获取mp3文件的tag信息

    下面利用一个python的实例程序,来学习python.这个程序的目的就是分析出所有MP3文件的Tag信息并输出. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  4. python中获取上一个月一号的方法

    业务场景: 我们经常会跑一些月级别或者周级别的报表. 周级别的报表还比较好确定,就是七天前的直接用timedelta(days=7)来获取开始日期就可以了; 但是月级别的报表就要麻烦一些,因为time ...

  5. python如何获取某模块的版本信息

    1)module.__version__ 2)用dir(module)查看有没有版本信息 3)help(module)

  6. python实现获取系统版本和mac信息上传到指定接口

    import os,platform,uuid,urllib.parse,urllib.request,json def BeforeSystemRequests(): ''' the systemi ...

  7. [VC]获取本地程序的版本信息信息

    CString CQwerApp::IS_GetAppVersion(char *AppName) { ////需要加上version.lib在link里 CString AppVersion; // ...

  8. 微信h5静默和非静默授权获取用户openId和用户信息的方法和步骤:

    原文链接:https://blog.csdn.net/qq_35430000/article/details/79299529 一.openId是什么?openId是用户在当前公众号下的唯一标识('身 ...

  9. Docker本地私有仓库实战

    Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下: 1)节省网络带宽,针对于每个镜像不用去Dock ...

  10. Kubernetes本地私有仓库配置

    实验环境 master 10.6.191.181 node1 10.6.191.182 node2 10.6.191.183 本地私有仓库 10.6.191.184 一.安装本地私有仓库 1.安装do ...

随机推荐

  1. MySQL 【CAST】函数,类型转换使用

    Cast(字段名 as 转换的类型 ),其中类型可以为: 1.CHAR[(N)] 字符型 2.DATE 日期型3.DATETIME 日期和时间型4.DECIMAL float型5.SIGNED int ...

  2. 项目脚手架之webpack

      分享版本: webpackV4.X (企企项目PC端-webpack: 4.29.6.webpack-cli: 3.1.1) 分享初衷: 本文我们结合企企项目(下面相关代码片段主要取至我们项目) ...

  3. 【2020NIO.AC省选模拟#10】C. 寄蒜几盒

    题目链接 原题解: 可以发现,假设我们把凸多边形看做障碍,一个点没有被染色当且仅当在它的位置上能看到凸多边形任意两条相对的边中的一条(也就是能看到至少$\dfrac{n}{2}$条边). 对于每个询问 ...

  4. [JSOI2014]宅男计划

    Description: 外卖店一共有N种食物,分别有1到N编号.第i种食物有固定的价钱Pi和保质期Si.第i种食物会在Si天后过期.JYY是不会吃过期食物的. 比如JYY如果今天点了一份保质期为1天 ...

  5. Java8:LocalDate/ LocalDateTime与String、Date、TimeStamp的互转

    LocalDate与String.Date.TimeStamp的互转: LocalDateTime与String.Date.TimeStamp的互转: 结果如下: 附代码: public static ...

  6. list与linkedlist(添加、删除元素)

    1)jdk1.8中list遍历过程中可以直接删除元素了(jdk1.7可以通过倒序遍历删除或iterator遍历删除元素) List<Integer> list = new ArrayLis ...

  7. SQL之rand,round,floor,ceiling,cast小数处理函数

    rand():取随机数,select rand() from T 结果:0.635811742495648 round():保留N位小数,四舍五入 select round(1.0446,N) flo ...

  8. 树莓派启动后自动连接wifi

    安装好系统后我们先使用 网线进行连接 使用ssh 工具连接 cd /etc/wpa_supplicant/ wpa_passphrase "网络名称" "密码" ...

  9. 20200922--计算矩阵边缘元素之和(奥赛一本通P91 3二维数组)

    输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是就一行和最后一行以及第一列和最后一列的元素. 输入; 第一行分别为矩阵的行数m和列数n(m<100,n<100),两者 ...

  10. Spring面试题大汇总

    1.Spring的IOC和AOP机制? 我们在使用spring框架其实就是为了实现IOC,依赖注入,和AOP,面向切面编程,主要有两种设计模式工厂模式和代理模式,IOC就是典型的工厂模式,通过sess ...