Python中的Shell脚本:调用使用curses等的程序

时间:2011-10-17 23:36:09

标签: python shell scripting subprocess stdout

这是一个非常具体的问题,但我正在寻找一个稍微更通用的解决方案

我正在用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 ” - 相反,我正在寻找一种更通用的技术,我可以应用于这个和其他配置任务。

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试:

import os
os.system(mycommand)

这适用于wget,在屏幕上的一行重写自身的进度条以这种方式正常工作。我想这对git和其他人也适用。