Python 调用 GitHub API 全攻略:获取用户信息、管理存储库与自动化操作

作者:API传播员 · 2025-10-21 · 阅读时间:5分钟
本文详细介绍了如何在Python中使用GitHub API进行自动化存储库管理和集成GitHub功能到应用程序中。内容包括生成访问令牌、发起GET请求获取用户信息、管理存储库列表、创建新存储库、更新存储库描述以及删除存储库的实用代码示例。

一. 使用 Python 与 GitHub API 交互

在开始之前,您需要生成一个 访问令牌 (Access Token) 并确保授予正确的权限范围。
GitHub API 的基础 URL 为:

https://api.github.com/

接下来我们通过 Python 发起 GET 请求来获取用户数据。


1. 示例:获取用户信息

以下代码演示如何获取某个 GitHub 用户的基本信息:

import requests

username = "apify"  # GitHub 用户名
url = f"https://api.github.com/users/{username}"

user_data = requests.get(url)
print(user_data.json())

输出示例:

{
  "avatar_url": "https://avatars.githubusercontent.com/u/24586296?v=4",
  "bio": "我们正在使网络更加可编程。",
  "blog": "https://apify.com/",
  "company": null,
  "created_at": "2016-12-15T10:36:52Z",
  "email": "hello@apify.com",
  "followers": 279,
  "following": 0,
  "html_url": "https://github.com/apify",
  "id": 24586296,
  "location": "互联网",
  "login": "apify",
  "name": "apify",
  "public_repos": 108,
  "type": "组织",
  "updated_at": "2023-08-03T08:51:47Z"
}

这样即可获取用户的简介、邮箱、公开仓库数等信息。


二. 获取用户的存储库列表

要获取用户的存储库列表,可以调用 /users/{username}/repos 端点:

import requests

base_url = "https://api.github.com"

def get_user_repos(username):
    url = f"{base_url}/users/{username}/repos"
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()
    return None

username = "apify"
repos = get_user_repos(username)

if repos:
    print(f"{username} 的存储库:")
    for repo in repos:
        print(repo["name"])

示例输出:

apify 的存储库:
actor-crawler
actor-scraper
actor-template
...

还可以使用 查询参数 来筛选结果,例如按更新时间排序:

def get_user_repos(username):
    url = f"{base_url}/users/{username}/repos"
    query_params = {"sort": "updated", "per_page": 5}
    response = requests.get(url, params=query_params)
    if response.status_code == 200:
        return response.json()
    return None

示例输出:

apify 的存储库:
crawler
fingerprint-suite
browser-pool
proxy-chain

三. 创建新的存储库

通过 POST 请求,您可以创建新仓库(需要 repo 权限的访问令牌):

import requests

base_url = "https://api.github.com"

def create_repo(access_token, repo_name, repo_descr=None):
    url = f"{base_url}/user/repos"
    headers = {"Authorization": f"token {access_token}"}
    data = {"name": repo_name, "description": repo_descr}
    response = requests.post(url, headers=headers, json=data)
    if response.status_code == 201:
        return response.json()
    return None

access_token = "YOUR_ACCESS_TOKEN"
repo_name = "apify_testing"
repo_descr = "使用 Python GitHub API 创建的新存储库。"

new_repo = create_repo(access_token, repo_name, repo_descr)

if new_repo:
    print("成功创建新的公共存储库!")
else:
    print("无法创建新的存储库。")

执行成功后即可在 GitHub 上看到新仓库。


四. 更新存储库描述

通过 PATCH 请求更新仓库描述:

def update_repo_descr(access_token, username, repo_name, new_description):
    url = f"{base_url}/repos/{username}/{repo_name}"
    headers = {"Authorization": f"token {access_token}"}
    data = {"description": new_description}
    response = requests.patch(url, headers=headers, json=data)
    if response.status_code == 200:
        return response.json()
    return None

access_token = "YOUR_ACCESS_TOKEN"
username = "GITHUB_USERNAME"
repo_name = "apify_testing"
new_description = "这是使用 PATCH 请求更新的描述。"

updated_repo = update_repo_descr(access_token, username, repo_name, new_description)

if updated_repo:
    print("存储库描述已更新。")
else:
    print("无法更新存储库描述。")

五. 删除存储库

最后,可以通过 DELETE 请求删除指定仓库:

def delete_repo(access_token, username, repo_name):
    url = f"{base_url}/repos/{username}/{repo_name}"
    headers = {"Authorization": f"token {access_token}"}
    response = requests.delete(url, headers=headers)
    if response.status_code == 204:
        print("存储库已成功删除。")
    elif response.status_code == 404:
        print("存储库未找到或已删除。")
    else:
        print(f"删除失败,状态码:{response.status_code}")

access_token = "YOUR_ACCESS_TOKEN"
username = "GITHUB_USERNAME"
repo_name = "apify_testing"

delete_repo(access_token, username, repo_name)

示例输出:

存储库已成功删除。

六. 总结

通过本文,您学习了如何使用 Python 调用 GitHub API,完成从 获取用户信息 → 获取仓库列表 → 创建/更新/删除仓库 的全流程操作。

这些技能可以帮助开发者:

  • 自动化 GitHub 日常任务。
  • 快速集成 GitHub 功能到自己的项目。
  • 提升开发效率与团队协作能力。

继续深入探索 GitHub REST API 和 GraphQL API,您还可以实现更多高级操作。


原文链接: https://blog.apify.com/python-github-api/