如何用Python/PyGithub获取GitHub仓库文件名?无密码如何调用登录方法?
如何用PyGithub在不登录的情况下获取GitHub仓库文件名列表?
好问题!咱们拆成两个核心部分来解答:
1. 不登录获取公开仓库的所有文件名列表
对于公开仓库,GitHub允许未认证的API访问(有请求次数限制,每小时60次,足够大多数小场景使用),所以完全不需要登录账号就能用PyGithub获取文件列表。
步骤:
首先确保你已经安装了PyGithub:
pip install pygithub
然后用匿名模式初始化Github对象,递归遍历仓库的文件和目录:
from github import Github # 匿名初始化,不需要任何账号信息 g = Github() # 替换成你要访问的仓库(格式:用户名/仓库名) target_repo = g.get_repo("octocat/Hello-World") def collect_all_files(repo, current_path=""): file_paths = [] # 获取当前路径下的所有内容 contents = repo.get_contents(current_path) for item in contents: if item.type == "file": # 如果是文件,记录完整路径 file_paths.append(item.path) elif item.type == "dir": # 如果是目录,递归遍历子目录 file_paths.extend(collect_all_files(repo, item.path)) return file_paths # 调用函数获取所有文件名 all_files = collect_all_files(target_repo) # 打印结果 for file in all_files: print(file)
这段代码会递归遍历仓库的所有子目录,把所有文件的完整路径都收集起来。
2. 仅知用户名时,能否调用github.Github(login, password)?
答案是不行。
github.Github(login, password)这个构造方法是用来做账号密码基本认证的,GitHub要求必须同时提供有效的用户名和密码才能通过认证——只有用户名没有密码的话,根本无法完成身份验证,自然没法用这个方式初始化。
如果你的需求是访问私有仓库,那必须要有该仓库的访问权限,这时候可以用**个人访问令牌(PAT)**替代密码,初始化方式是:
# 用PAT令牌初始化,不需要密码 g = Github("你的个人访问令牌")
但要注意,生成PAT需要你拥有账号的登录权限(也就是知道密码),或者仓库所有者给你颁发了授权令牌。如果既没有密码也没有PAT,那只能访问公开仓库,用第一部分的匿名方式就够了。
内容的提问来源于stack exchange,提问作者stan25
相关产品推荐
相关产品推荐

