Python 从GitLab上下载单个文件至本地 进行本地项目更新

博主搞了个项目,需要在线静默更新用户程序文件夹下的一些文件。捣鼓了半天终于搞出来了,特来分享。

工具:python 3.X, GitLab

用到的库:gitlab

注:博主这里的Gitlab是同事在服务器上弄好的,具体怎么在服务器上搭建GitLab,博主也不会…(~ = ▽ = )~,等会上传本书,大家一起学习吧。

第一步:安装python-gitlab包

pip install python-gitlab

 

第二步:在GitLab网页上生成AccessToken

账户——Settings

左侧Access Tokens,根据要求填写,建议有效期弄长点,Scope勾选 □API,弄完点击create。

然后一定要把生成的Access Token另外存起来!!因为你一旦离开这个界面,就再也看不到了。

第三步:开始码代码

直接上博主的测试代码:

这里注意,下载后初次decode会得到bytes格式的内容,

针对编译过的文件,比如 .pyd, .exe类的文件,直接使用bytes格式配合‘wb’形式写入。

但是对于可编辑的文件,比如 .py 文件需要二次decode,获得str()格式,使用‘w’写入,这样中文才不会乱码。

可以用正则表达式来判断文件后缀名。

 

博主亲身试验!

# gilab包
import gitlab

class onlineUpdate:
    # 初始化
    def __init__(self):
        # 服务器地址
        self.url = 'https://xx.xx.xx.xx'
        # 前面生成的Access Token
        self.accessToken = 'xxxxxxxx'

    # 登录
    def login(self):
        gl = gitlab.Gitlab(self.url,self.accessToken)
        return gl

    # 获得项目:projectID的格式随意,反正我就写了个数字进去
    def getProject(self,projectID):
        gl = self.login()
        projects = gl.projects.get(projectID)
        return projects

    # 获得project下单个文件
    def getContent(self):
        projects = self.getProject(5)
        # 获得文件
        f = projects.files.get(file_path='paramRef.cp36-win_amd64.pyd',ref='master')
        # 第一次decode获得bytes格式的内容
        content = f.decode()
        # 第二次decode获得str
        # content = content.decode()
        # 存到本地
        with open('paramRef.cp36-win_amd64.pyd', 'wb') as code:
            code.write(content)

# 测试
ou = onlineUpdate()
ou.getContent()

运行后,文件就从Gitlab上下载下来啦。~(=▽=~)

这里为跟博主一样不熟悉Git的人讲解一下:

1. getContent方法里的ref = ‘master’,是指上传文件时的target Branch,一般好像默认都是master?

2. project ID 

python-gitlab也是可以根据名字找project的,但是博主尝试了一次失败了?偷懒直接用ID了。

3. 存本地的时候,with open 里的filepath一定要把目录写写清楚,

尤其是文件的后缀名!!!不要写错啦。

比如博主下载的是pyd如果写成了txt或者漏写了,就会GG。

 

以上代码经过博主亲自测试,请各位放心借鉴。

 

附上博主的参考文献:

1. gitlab库的官方文档:

https://python-gitlab.readthedocs.io/en/stable/gl_objects/projects.html#reference

2. python gitlab api

https://blog.youkuaiyun.com/u012881331/article/details/82881090

3. Python Gitlab Api 使用

https://blog.youkuaiyun.com/xie_0723/article/details/75215869

4. python操作gitlab API

https://www.jianshu.com/p/615335e40be7

5. 了解GIt的书

优快云上好多,叫progit2

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooncrystal123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值