命令行下载github代码和指定特定子目录
·
## 用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
-
GitHub 提供 API 访问仓库内容,可以使用
curl或脚本提取指定内容。 -
示例请求:
curl -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/lansinuote/Huggingface_Toturials/contents/data结果将返回包含文件信息的 JSON 数据。
-
根据 JSON 响应中的
download_url字段,使用wget或curl下载具体文件: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 "所有文件下载完成!"
运行方式
- 将上述脚本保存为
download_data.sh。 - 赋予执行权限并运行:
chmod +x download_data.sh ./download_data.sh
更多推荐
所有评论(0)