You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:22:34