这是一个非常具体的问题,但我正在寻找一个稍微更通用的解决方案:
我正在用Python编写一个shell脚本来协助各种配置任务,包括执行各种存储库的git clone
。当我打电话给git clone
时,有没有一个好方法让我直接向终端提供git显示输出(进度条等)?
将子进程的stdout传递给sys.stdout不会削减它,因为git
的行为涉及在终端的相同部分重写以指示进度。所以这还不够好:
import sys, subprocess
process = subprocess.Popen("git clone --recursive https://github.com/my/repo.git",
shell=True,
stdout=sys.stdout,
stderr=subprocess.PIPE)
我不是在寻找答案“使用 git-python ” - 相反,我正在寻找一种更通用的技术,我可以应用于这个和其他配置任务。
谢谢!
答案 0 :(得分:2)
尝试:
import os
os.system(mycommand)
这适用于wget
,在屏幕上的一行重写自身的进度条以这种方式正常工作。我想这对git
和其他人也适用。