You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python函数批量下载CSV文件中的GitHub公开仓库

批量下载GitHub公开仓库到本地(Python实现)

完整代码实现

以下是整合了CSV读取与仓库批量下载的完整代码:

import csv
import requests
import zipfile
import os
from io import BytesIO

def download_github_repo(repo_path, save_dir="downloaded_repos"):
    # 构造仓库默认分支(main)的zip下载链接
    repo_url = f"https://github.com/{repo_path}/archive/refs/heads/main.zip"
    # 创建根保存目录,已存在则跳过
    os.makedirs(save_dir, exist_ok=True)
    
    try:
        # 流式下载zip包,降低内存占用
        response = requests.get(repo_url, stream=True)
        response.raise_for_status()  # 触发HTTP请求错误
        
        # 读取zip内容并解压
        with BytesIO(response.content) as zip_buffer:
            with zipfile.ZipFile(zip_buffer, 'r') as zip_ref:
                # 每个仓库单独存放在以仓库路径命名的子目录中
                target_dir = os.path.join(save_dir, repo_path)
                zip_ref.extractall(target_dir)
                print(f"✅ 完成下载: {repo_path}")
    except requests.exceptions.RequestException as e:
        print(f"❌ 下载失败 {repo_path}: {str(e)}")
    except zipfile.BadZipFile:
        print(f"❌ 无效zip包 {repo_path}: 可能仓库不存在或默认分支不是main")

# 读取CSV获取Java仓库列表
file_name = "dataset.csv"
java_repos = []

# 用with语句自动管理文件句柄,避免资源泄漏
with open(file_name, 'r', newline='', encoding='utf-8') as f:
    csv_reader = csv.reader(f)
    # 如果CSV有表头,取消下面一行的注释跳过表头
    # next(csv_reader)
    for row in csv_reader:
        # 检查列数足够且第二列为Java,避免索引越界
        if len(row) >= 2 and row[1].strip() == "Java":
            repo_path = row[0].strip()
            if repo_path:  # 跳过空的仓库地址
                java_repos.append(repo_path)
                print(f"🔍 找到仓库: {repo_path}")

# 执行批量下载
for repo in java_repos:
    download_github_repo(repo)

关键细节说明

  • 分支适配:代码默认使用main分支,如果你的目标仓库默认分支是master,请将链接中的refs/heads/main替换为refs/heads/master。
  • 目录结构:所有仓库会被下载到downloaded_repos目录下,每个仓库单独存放在以用户名/仓库名命名的子文件夹中,避免文件冲突。
  • 错误处理:单个仓库下载失败不会中断整个批量任务,会打印错误信息继续处理下一个仓库。
  • CSV读取优化:添加了编码设置、空值过滤和列数检查,避免因CSV格式问题导致程序崩溃。

内容的提问来源于stack exchange,提问作者Z Bokaee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:15:19