git clone 的 Python 进度条

2023-12-14

我使用 GitPython 在我的程序中克隆一个存储库。我想出了如何使用 clone_from 命令显示克隆的状态,但我希望状态看起来更像 tqdm 进度条。我尝试使用 requests 库来获取文件的大小,但我仍然不确定如何实现它。尝试做下面类似的事情,但它不起作用。任何帮助表示赞赏,谢谢。

url = '[email protected]:somegithubrepo/repo.git'
r = requests.get(url, stream=True)
total_length = r.headers.get('content-length')

for i in tqdm(range(len(total_length??))):
    git.Git(pathName).clone(url)

这是另一个答案的改进版本。该栏仅在以下情况下创建一次CloneProgress类已初始化。更新时,它会将标准设置为正确的数量。

import git
from git import RemoteProgress
from tqdm import tqdm

class CloneProgress(RemoteProgress):
    def __init__(self):
        super().__init__()
        self.pbar = tqdm()

    def update(self, op_code, cur_count, max_count=None, message=''):
        self.pbar.total = max_count
        self.pbar.n = cur_count
        self.pbar.refresh()

git.Repo.clone_from(project_url, repo_dir, branch='master', progress=CloneProgress()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git clone 的 Python 进度条 的相关文章

随机推荐

  • Postgres 查询获取所有孩子的 id

    我是一个 SQL 菜鸟 到目前为止只编写了非常基本的查询 我有一张看起来像这样的桌子 item full name varchar 65535 item id bigint item owners varchar 255 item appr
  • git lock 错误背后的原因

    我正在一个拥有数百个分支的大型 git 存储库中工作 我在 Windows 上 通常当我git pull 它给了我多个锁定错误 例如 error cannot lock ref refs remotes origin branchname
  • 如何检测 UITableView beginUpdates/endUpdates 上的动画已结束?

    我正在使用插入 删除表格单元格insertRowsAtIndexPaths deleteRowsAtIndexPaths包装成beginUpdates endUpdates 我也在使用beginUpdates endUpdates调整 ro
  • 文件夹权限 - 部分或全部身份引用无法翻译

    我想在远程服务器上为域用户设置文件夹 ACL 但总是收到以下错误消息 部分或全部身份参考无法翻译 我究竟做错了什么 这是我的代码 string folderPath remoteServer testDirectory string acc
  • 两次时间之差(以分钟为单位)[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我见过一些使用 Joda Time 和其他方法来计算两个日期之间以毫秒为单位的差异的示例 但是如何将这些应用到仅以分钟为单位计算两个时间之间的差异呢 例如 下午 2 45 和上午 1
  • PHP 致命错误:调用未定义的函数?

    因此 当我将网站托管在我的网络主机上时 我的网站出现了问题 我收到这个错误 PHP Fatal error Call to undefined function getSkillIcons 奇怪的是 在本地 Xampp 它工作得很好 这就是
  • Qt:如何获取正在运行的 QProcess 的实时输出

    我必须在 QProcess 运行时获取它的输出 因此我编写了以下代码 CommandExecutor C CommandExecutor C mProcessStatus AI UNKNOWN mOnTdiActiveCallback mT
  • 使用 Embed API 嵌入 Google Analytics 位置地图视图

    下面是 Google 分析网站上的视图屏幕截图 地理位置 gt 位置 gt 主要维度 城市 我想嵌入这个确切的视图 或者使用 google 的 Embed API 尽可能类似地复制它 并将其显示在我自己的网站上 我已经按照这里的教程进行操作
  • 为什么要使用指针(性能)?

    我想知道是否有关于原始对象与对象指针的性能基准 我知道在引用类型 例如地图 上使用指针是没有意义的 所以请不要提及它 我知道如果数据需要更新 您 必须 使用指针 所以请不要提及它 我发现的大多数答案 文档基本上都改写了官方文档中的指南 If
  • 类装饰器Nestjs修改类中的每个方法

    我想创建一个装饰器 它可以获取类的所有方法并用某些功能包装它们 对于这个例子 只需像这样记录 export function CustDec
  • MuleStudio studio:工作室目标未能执行

    我在 Mule Studio 工作区 从 Mule Studio 中 复制 粘贴了一个工作项目来创建一个新项目 之后 我可以在新项目上进行 mvn clean 安装 一切正常 然后 在对 pom 进行任何修改 即添加空行 后 我收到以下错误
  • 是否可以将数据绑定到枚举并显示用户友好的值? [复制]

    这个问题在这里已经有答案了 我想显示我的合同的状态 两者声明如下 public enum RentStatus Description Preparation description Preparation Description Acti
  • 当用户滚动到页面部分时触发 CSS 动画

    我的网站上有一个简单的 CSS 动画 我想在其中显示 5 个 div 一次连续显示一个 一切正常 但我想在用户滚动到我网站上的特定部分时触发该动画 现在动画在页面加载时开始 这是我的代码 div div div img src https
  • AngularDart:如何将事件从子组件传递到二级父组件

    我将 StreamController 与事件一起使用 本质上我有一个 3 级组件层次结构 我们称它们为 A B C 层次结构是A gt B gt C 事件的起源在c中 我希望事件由A处理 我知道使用 Output 的直接父 gt 子关系很
  • 如何在没有 Activity 的情况下使用 LocalBroadcastManager

    我有我的课 ABC 通过扩展BroadcastReceiver 但最近我偶然发现LocalBroadcastManager 这是我的班级声明 public class ABC extends BroadcastReceiver 因此 ABC
  • CSVReader - 使用“作为转义字符时出现错误

    我正在使用 OpenCSV 我有一个CSVReader尝试解析 CSV 文件 该文件有引号字符 和分隔符 和转义字符也 请注意 CSV 包含以下单元格 ballet 24 classes 实际上代表这些值 ballet 24 classes
  • Java:使用 Fibonacci 堆实现 Dijkstra 算法

    新来的 但已经作为客人潜伏了一段时间了 好的 所以我一直在尝试使用 Fibonacci 堆 在 Java 中 执行 Dijkstra 的最短路径算法 经过一番搜索 我偶然发现了两个代表斐波那契堆的现成实现 第一个实现做得相当漂亮 可以找到h
  • Django 单元测试;使用 python-social-auth 登录

    我想为我正在使用的 Django 应用程序编写单元测试python 社交 身份验证 运行 Django 并使用浏览器时一切都很好 感谢 python social auth 但是 我似乎无法编写单元测试 因为我无法创建经过身份验证的客户端来
  • 为什么#include 之后仍然需要使用 std::string ? [复制]

    这个问题在这里已经有答案了 为了使用字符串 我需要包含字符串标头 以便其实现可用 但如果是这样 为什么我还需要添加这一行using std string 为什么它还不知道字符串数据类型 include
  • git clone 的 Python 进度条

    我使用 GitPython 在我的程序中克隆一个存储库 我想出了如何使用 clone from 命令显示克隆的状态 但我希望状态看起来更像 tqdm 进度条 我尝试使用 requests 库来获取文件的大小 但我仍然不确定如何实现它 尝试做