Python下载GitHub数据

配置文件

[Source]
Source_path = /Users/xxx/PycharmProjects/Source/list
Source_path_original = /Users/xxx/PycharmProjects/Source/original
Source_path_sg = /Users/xxx/PycharmProjects/Source/sgmodule
Source_backup_dir = /Users/xxx/PycharmProjects/Source/backup

下载模块

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/11/6 09:22
# @Author  : lumia98
# @File    : DowanloadUrls
# @Software: PyCharm
# 下载url数据
import os,sys
import ssl
import time
import urllib.request

# 下载模块
def downloanUrl(urlPath, filePath, mPath):
    """
    urlPath: 下载Github原始数据的url
    filePath: 存放Github数据的目录
    mPath: 其他格式后缀的目录
    """
    # 全局取消证书验证
    #ssl._create_default_https_context = ssl._create_unverified_context

    # 后缀的变量
    list_suffix = ".list"
    yaml_suffix = ".yaml"

    # 下载的url数据是字典集合
    # 判断传递url是否为字典
    if isinstance(urlPath, dict):
        # 循环字典
        for i in urlPath.items():
            # 切割字典key,方便辨识传递的数据是否带后缀
            a = str(i[0]).split(".")  # 以 . 切割
            if len(a) == 1:  # 如果切割完成,长度没有两个(不是aa.js这种)
                # print(a)
                # 默认用list后缀
                urllib.request.urlretrieve(i[1], os.path.join(filePath, i[0] + list_suffix))
                time.sleep(2)
            else:
                # key带了后缀
                urllib.request.urlretrieve(i[1], os.path.join(mPath, i[0] ))
                time.sleep(2)

            # 判断数据下载是否完整
            if len(a) == 1:
                # 计算list后缀下载的文件大小
                list_size = os.path.getsize(os.path.join(filePath, i[0] + list_suffix))

                # 转换成整数
                int_list_size = int(list_size)

                if int_list_size <= 90:  # 如果小于90字节,则退出
                    print("{} 数据下载过小,请查看文件是否完整.....".format(i[0]))
                    os.remove(os.path.join(filePath, i[0] + list_suffix))
                    break
                else:
                    print("{} 正在下载.............".format(i[0]))
            else:
                # 计算不是list后缀的文件大小(如模块这些)
                exists_path = os.path.exists(os.path.join(mPath, i[0])) # 判断文件是否存在
                #print(i[0])
                if exists_path:
                    other_size = os.path.getsize(os.path.join(mPath, i[0]))

                    int_other_size = int(other_size)

                    if int_other_size < 10:
                        print("{} 数据下载过小,请查看文件是否完整.....".format(i[0]))
                        os.remove(os.path.join(mPath, i[0]))
                        break
                    print("{} 正在下载.............".format(i[0]))
    else:
        # 如果不是字典的下载数据,则告诉对方
        print("""
                  url的格式请用字典方式传递,如:
                  test = {"xxx": "https://url/xxx.py"}
                  """)
        exit(0)

需要下载的数据模块

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/11/7 09:11
# @Author  : lumia98
# @File    : Source
# @Software: PyCharm
import time, os
from Functions import DowanloadUrls
import configparser

class githubObj(object):
    """
    Source 相关代码
    """

    def __init__(self):
        # 获取FilePath.conf配置路径
        RootPath = os.path.abspath(".")
        ConfPath = os.path.join(RootPath, "Functions", "FilePath.conf")
        # 读取FilePath.conf内容
        cf = configparser.ConfigParser()
        cf.read(ConfPath)
        # 拿到conf内容
        self._SourcePath = cf.get("Source", "Source_path") # finsh后的存储数据目录
        self._Source_original = cf.get("Source", "Source_path_original") # Github下载存放目录
        self._Source_sgmodule = cf.get("Source", "Source_path_sg") # github模块下载地址目录
        self._Source_backup = cf.get("Source", "Source_backup_dir") # 备份上次的数据目录

        # url地址集合
        self._urls = {
            # github地址
            "xxx": "https://raw.githubusercontent.com/xxx.py",
            "aa.js": "https://raw.githubusercontent.com/aa.js"
        }

    # 下载github数据
    def StartDownload(self):
        DowanloadUrls.downloanUrl(urlPath=self._urls,filePath=self._Source_original, mPath=self._Source_module)

启动下载

githubObj().StartDownload()

此代码只需要在githubObj类(url地址集合)里的数据增删改

如果目录则修改配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值