2013-12-16 139 views
0

我想在Python中调用“git clone”命令。我希望Python脚本可以将GIT命令输出显示在屏幕上,就像在终端中运行一样。例如克隆进程的百分比信息。无论如何,它是用Python来做的吗?如何在Python中“实时”显示命令输出到屏幕?

+0

感谢。我已经尝试了该帖子中提到的解决方案。但它仍然没有像我期望的那样行事。
例如:
我只能捕捉1行
>>> Cloning into 'suba' ...
但是终端的输出应为:
Cloning into 'suba'... remote: Counting objects: 6, done. remote: Compressing objects: 100% (3/3), done. remote: Total 6 (delta 0), reused 0 (delta 0) Receiving objects: 100% (6/6), done. Checking connectivity... done. enchanter

回答

0

看看Python的子进程模块,你可以捕获输出到一个变量,然后使用它。有拦截方向和粗壮的方法。它是从2.4开始提供的,应该可以做到。我已经将这个用于运行系统命令的脚本来捕获工作中的输出。回复如果您需要一个例子,我可以挖掘从我明天早上的工作电脑一升起来......

http://docs.python.org/2/library/subprocess.html

try: 
     # Needs to all be one argument for acme command... 
     cmd = ["acme nw -proj " + self.based_on] 
     p = subprocess.Popen(cmd, 
          cwd=place, 
          shell=True, 
          stdout=subprocess.PIPE, 
          stderr=subprocess.PIPE) 
     output, error_msgs = p.communicate() 
    except (OSError) as err: 
     sys.stdout.write("ERROR {0} ({1})\n".format(err.strerror, 
                err.errno)) 
     sys.exit(err.errno) 
    if len(error_msgs) > 0 and error_msgs != "Scanning the source base and preparing the workspace, please wait ...\n": 
     sys.stdout.write("There were errors, during view create\n") 
     sys.stdout.write(error_msgs) 
    else: 
     sys.stdout.write("SUCCESS\n") 
+0

我已阅读文档。并在重复的问题中尝试解决方案。但没有任何工作正确。我只能得到一行git clone命令输出。 git命令输出中缺少所有统计信息。 – enchanter

+0

也许你可以用代码更新文章? – pcm

相关问题