## 用curl结合GitHub的ZIP下载功能实现

# 第一步:使用curl下载GitHub仓库的ZIP压缩包
!curl -L -o Huggingface_Toturials.zip https://github.com/lansinuote/Huggingface_Toturials/archive/refs/heads/main.zip

# 第二步:解压下载的ZIP文件
!unzip Huggingface_Toturials.zip

# 第三步:列出解压后的文件内容(验证成功)
!ls Huggingface_Toturials-main

## 使用 Python 脚本下载整个文件夹内容

GitHub 没有提供直接下载整个文件夹的功能,但你可以通过 GitHub API 或解析 HTML 的方式来实现。

import os
import requests
from bs4 import BeautifulSoup

# 设置仓库信息
base_url = "https://github.com/lansinuote/Huggingface_Toturials/tree/main/data"  # data 文件夹的页面地址
raw_base_url = "https://raw.githubusercontent.com/lansinuote/Huggingface_Toturials/main/data/"  # raw 文件路径
save_path = "./data"  # 下载保存路径

# 创建保存文件夹
os.makedirs(save_path, exist_ok=True)

# 获取 data 文件夹的 HTML 页面
response = requests.get(base_url)
soup = BeautifulSoup(response.text, "html.parser")

# 找到所有文件链接
file_links = soup.find_all("a", class_="js-navigation-open Link--primary")

# 下载每个文件
for link in file_links:
    file_name = link.text  # 获取文件名
    file_url = raw_base_url + file_name  # 拼接原始文件的URL
    print(f"正在下载:{file_name} ...")
    
    # 下载文件并保存到本地
    file_response = requests.get(file_url)
    with open(os.path.join(save_path, file_name), "wb") as f:
        f.write(file_response.content)

print("所有文件下载完成!")

## 使用 GitHub Content API

  1. GitHub 提供 API 访问仓库内容,可以使用 curl 或脚本提取指定内容。

  2. 示例请求:

    curl -H "Accept: application/vnd.github.v3+json" \
         https://api.github.com/repos/lansinuote/Huggingface_Toturials/contents/data
    

    结果将返回包含文件信息的 JSON 数据。

  3. 根据 JSON 响应中的 download_url 字段,使用 wgetcurl 下载具体文件:

    wget <download_url>
    
完整 Bash 脚本示例

以下脚本将解析 API 响应并自动下载 data 文件夹中的所有文件:

#!/bin/bash

# 仓库信息
REPO="lansinuote/Huggingface_Toturials"
FOLDER="data"
API_URL="https://api.github.com/repos/$REPO/contents/$FOLDER"

# 获取文件列表
curl -s $API_URL | grep '"download_url":' | cut -d '"' -f 4 | while read url; do
  echo "正在下载:$url"
  wget -P ./data $url
done

echo "所有文件下载完成!"
运行方式
  1. 将上述脚本保存为 download_data.sh
  2. 赋予执行权限并运行:
    chmod +x download_data.sh
    ./download_data.sh
    
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐