Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的Shell脚本:调用使用诅咒等的程序_Python_Shell_Scripting_Subprocess_Stdout - Fatal编程技术网

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

Python中的Shell脚本:调用使用诅咒等的程序,python,shell,scripting,subprocess,stdout,Python,Shell,Scripting,Subprocess,Stdout,这里有一个非常具体的问题,但我正在寻找一个更一般的解决方案: 我正在用Python编写一个shell脚本来帮助完成各种配置任务,包括对各种存储库执行git克隆。当我调用git clone时,是否有一种好方法可以直接向终端提供git显示输出(进度条等) 仅仅将子进程的标准输出管道化到sys.stdout并不能切断它,因为git的行为需要在终端的同一部分上重新写入以指示进度。所以这还不够好: import sys, subprocess process = subprocess.Popen("git

这里有一个非常具体的问题,但我正在寻找一个更一般的解决方案:

我正在用Python编写一个shell脚本来帮助完成各种配置任务,包括对各种存储库执行
git克隆。当我调用
git clone
时,是否有一种好方法可以直接向终端提供git显示输出(进度条等)

仅仅将子进程的标准输出管道化到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”的答案——而是在寻找一种更通用的技术,可以应用于此任务和其他配置任务

谢谢

试试看:

import os
os.system(mycommand)
这适用于
wget
,在屏幕上的一行上重写自身的进度条以这种方式正确工作。我想它对git和其他人都适用