如何用Python获取Git仓库目录与文件列表并解析?现有代码无返回
解决Python获取Git仓库所有文件及详情的问题
你的代码没返回结果,主要是两个原因:一是os.listdir(local_path)仅获取了根目录内容,但没做打印或保存操作;二是缺少递归遍历子目录的逻辑,没法拿到所有文件的详情。另外你分支切换的代码片段不完整,得确保正确切到目标分支abc。
下面是修正后的完整代码,可实现克隆仓库、切换分支、递归遍历所有文件并获取详情:
import git import os from git import Repo # 配置仓库地址和本地路径 repo_url = "你的Git仓库地址" local_path = "本地存储路径" target_branch = "abc" # 仅当本地路径不存在时克隆仓库 if not os.path.exists(local_path): Repo.clone_from(repo_url, local_path) # 初始化仓库对象 repo = git.Repo(local_path) remote = repo.remote("origin") # 拉取最新分支信息 remote.fetch() # 切换到目标分支 repo.git.checkout(target_branch) # 递归遍历所有文件和目录,获取详情 def get_file_details(root_path): for root, dirs, files in os.walk(root_path): print(f"当前目录: {root}") for file in files: file_path = os.path.join(root, file) # 获取文件大小(字节) file_size = os.path.getsize(file_path) # 获取文件最后修改时间(转成可读格式) modify_time_str = os.path.ctime(os.path.getmtime(file_path)) print(f" 文件: {file} | 路径: {file_path} | 大小: {file_size}字节 | 最后修改时间: {modify_time_str}") # 启动遍历 get_file_details(local_path)
关键调整说明:
- 增加本地路径判断,避免重复克隆仓库
- 调用
remote.fetch()拉取最新分支信息,确保切换到的是最新的abc分支 - 用
os.walk()替代os.listdir,实现递归遍历所有子目录 - 新增文件大小、修改时间等详情的获取逻辑,满足需求
- 所有结果直接打印输出,你也可以改成写入文件保存
内容的提问来源于stack exchange,提问作者Shivani
相关产品推荐
相关产品推荐

