Python批量Git Pull,对文件夹批量进行Pull操作

效果展示

在这里插入图片描述

说明

  1. 本来是想写的完善一些,但由于是自用,所以写出来后发现已经解决了自己的问题,所有 2和3功能没有写。

  2. 执行的话,需要 cmd 之后 直接 Python BatchGitPull.py 运行下面代码即可。

  3. 里面同时涉及到其他Pyhon知识点(写给自己的,因为自己老记不住):
    1. 输入任意键退出控制台
    2. 控制台输出不同颜色
    3. 获取命令执行后的返回结果
    4. 根据不同的输入执行不同的代码
    5. 获取用户管理员权限,从而刷新系统DNS
    6. …

  4. 注意:is_admin 这个访问是来判断是否有管理员权限的,如果担心代码有问题,可以去掉管理员权限的相关代码。我是因为个人情况,不加的话,无法进行系统DNS的刷新,导致有时候梯子换了频道后,还是Pull不下来,所以出此下策。

具体代码

#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import time
import ctypes
import sys
import subprocess
import colorama
from colorama import Fore, Styledef is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except:return Falsedir_root = 'N:/Program Files/sd-webui-aki-v4.4/ComfyUI/ComfyUI/custom_nodes'def PrintError(log):print(Fore.RED + log + Style.RESET_ALL)  # 红色def PrintSuccess(log):print(Fore.GREEN + log + Style.RESET_ALL)  # 绿色def BatchPull():dir_route = dir_rootif os.path.exists(dir_route) == False:PrintError("没有这个文件夹 " + dir_root)return# 切换到test目录os.chdir(dir_route)current_directory = os.getcwd()dirs = os.listdir()# 定义git命令command = 'git pull'  # origin master'netCommand = 'ipconfig/flushdns'index = 0error_list = {}for code_dir in dirs:index += 1# 拼接路径(当前目录+代码目录)# os.system(netCommand)# 使用 subprocess.runresult = subprocess.run(netCommand, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True)# 获取标准输出# 获取标准错误输出(如果有)if result.stderr:PrintError("网络错误输出:" + result.stderr)else:print("刷新网络成功!")  # + result.stdout)full_path = os.path.join(current_directory, code_dir)if os.path.isdir(full_path) == False:print("跳过:不是文件夹 " + full_path)continueos.chdir(full_path)print(str(index) + " : 进行 Pull " + code_dir)# os.system(command)result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True)waitTimer = 2# 获取标准错误输出(如果有)if result.stderr:waitTimer *= 2PrintError("错误输出:" + result.stderr)error_list[index] = code_direlse:PrintSuccess("完成输出:" + result.stdout)time.sleep(waitTimer)# print(code_dir + " Pull完毕! " + full_path + '\n')os.chdir(dir_route)if len(error_list) > 0:for err in error_list:PrintError("未完成列表:" + err + " : " + error_list[err])else:PrintSuccess("完美!全部更新成功!!")input("按回车键退出...")project_addr = ['git@gitlab.com:project/mengxixing-h5.git','git@gitlab.com:project/waterinbrainopendomain.git','git@gitlab.com:project/waterinbrain.git'
]def BatchClone():os.mkdir('E:/code')os.chdir('E:/code')command = 'git clone 'for i in project_addr:os.popen(command + str(i))time.sleep(1)print(i + " Clone完毕!")print('当前项目组已全部拉取完毕')# BatchPull()if is_admin():# 初始化coloramacolorama.init()PrintSuccess("测试")user_input = input("将对 \" " + dir_root + " \" 文件夹下所有子文件执行批量Git操作,请确定路径正确。\n\n" +"请选择操作方式: \n1. 按1键 则全部执行Pull,获取最新代码。\n2. 按2键 则只执行Pull失败的库 " +"\n3. 按3键 暂时未开发\n \n \n 注意:\n1. 只有当1键执行后才会有Pull错误数据,这时候2键才有效果\n2. 按键后,再按回车键来确定\n" +"___________________________________________\n")if user_input == "1":BatchPull()elif user_input == "2":print("执行了B操作")elif user_input == "3":input("暂未任何操作,按回车键退出...")else:input("无效输入,按回车键退出...")else:ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/189170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu18.04 Udacity project_9_PID_control 如何运行

工程源码和仿真器下载: 源码 仿真器 --- Ubuntu就下载 term2_sim_linux.zip 这个压缩文件即可 紧接着给方框中的文件赋可执行权限 打开project_9_PID_control文件夹 执行如下脚本,安装必要的库,比如websocket(程序生成的可执行…

springboot+vue志愿者在线报名服务管理系统java毕业设计源码+数据库

vuespringboot志愿服务管理系统 本项目是springbootvueElementuimysql源码 开发工具,idea和eclipse都可以,MySQL 源码下载地址 https://download.csdn.net/download/yibo2022/88401958?spm1003.2166.3001.6637.3https://download.csdn.net/download/yibo2022/884…

凯捷对汽车数字化的思考

标题凯捷(中国)对汽车行业数字化转型的探索 凯捷中国数字化研发团队有超过1200名专业顾问致力于数字化相关项目,分布在北京、天津、沈阳、呼和浩特、上海、昆山、杭州、广州、深圳等地,运用Rightshore交付模式和通过专业顾问为客…

Python 重要数据类型

目录 列表 序列操作 列表内置方法 列表推到式 字典 声明字典 字典基本操作 列表内置方法 字典进阶使用 字典生成式 附录 列表 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的…

流媒体方案之FFmepeg——实现物联网视频监控项目

目录 前言 一、FFmpeg介绍 二、FFmpeg简易理解 三、FFmpeg的重要概念 四、软硬件准备 五、移植、运行FFmpeg 六、运行FFmpeg 前言 最近想做一个安防相关的项目,所以跟着韦东山老师的视频来学习视频监控方案的相关知识,韦东山老师讲的课非常好&…

ABB YuMi协作式双臂机器人进入工厂,极大缓解劳动力短缺问题

原创 | 文 BFT机器人 日本SUS公司是一家为汽车和其他制造业提供铝框架和压铸铝部件的知名供应商,近年来,由于全球供应链面临严重中断,该公司希望能够寻找一家自动化供应商来帮助其恢复日本静冈县的产品生产。SUS公司表示,由于生产…

HarmonyOS——解决本地模拟器无法选择设备的问题

在使用deveco studio进行鸿蒙开发的时候,可能会遇到本地模拟器已经启动了,但是仍然无法选择本地模拟器中的设备,尤其在MAC环境中尤为常见。 解决办法: 先打开IDE启动本地模拟器,等模拟器启动后,退出IDE重新…

【代码】基于算术优化算法(AOA)优化参数的随机森林(RF)六分类机器学习预测算法/matlab代码

代码名称:基于算术优化算法(AOA)优化参数的随机森林(RF)六分类机器学习预测算法/matlab代码 使用算术优化算法(AOA)优化分类预测模型的参数,收敛性好,准确率提升明显&am…

Python 流程控制

目录 程序流程 顺序结构 分支结构 单分支 双分支 多分支 if 嵌套 循环结构 while循环 for 循环 退出循环 循环与分支嵌套 附录 程序流程 程序是由语句构成,而流程控制语句 是用来控制程序中每条语句执行顺序的语句。可以通过控制语句实现更丰富的逻辑…

后端项目操作数据库增删改查-使用MyBatis配置实现数据操作

一、创建一个数据表对应的实体类 在src/main/java/包名/路径下新建pojo.entity文件夹,如com.luoyang.small.pojo.entity,并在该文件夹下新增实体类java文件:如相册Album.java 该实体类的属性应与数据表的字段对应 数据表样例如下&#xff1a…

24年5月软考高项考哪些内容,考试大纲什么的?

信息系统项目管理师属于「计算机技术与软件专业技术资格(水平)考试」中的高级资格考试。 也称「软考高项」,可以「以考代评」用来评副高级职称。 一、软考备考前期准备 信息系统项目管理师考试科目包括: 《综合知识》、《案例分…

html原生echart柱状图

html原生echart柱状图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Bar Chart Example</title><!-- Include Chart.js library --><script src"https://cdn.jsdelivr.net/npm/…

Linux的基本指令(4)

目录 20.tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 21.bc指令 22.uname –r指令&#xff1a; 23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d 20.tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#…

手机上的记事本怎么打开?安卓手机通用的记事本APP

有不少上班族发现&#xff0c;自己想要在电脑上随手记录一些工作文字内容&#xff0c;直接使用电脑上的记事本工具来编辑文字是比较便捷的。但是如果想要在手机上记录文字内容&#xff0c;就找不到手机上的记事本了。那么手机上的记事本怎么打开&#xff1f;安卓手机通用的记事…

Windows环境 dockertopdesk 部署gitlab

1.在dockertopdesk里搜索 gitlab镜像 (pull)拉取镜像 2.运行镜像到容器 mkdir gitlab gitlab/etc gitlab/log gitlab/opt docker run -id -p 3000:80 -p 9922:22 -v /root/gitlab/etc:/etc/gitlab -v /root/gitlab/log:/var/log/gitlab -v /root/gitlab/opt:/var/opt/gitla…

百度智能云文字识别使用问题解决合集

1.创建试用程序时需要16位的签名MD5 解决方法&#xff1a;使用Java8 201版本及以下的jdk创建签名 下载地址&#xff1a;http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html#jdk8u201 生成签名代码&#xff1a;keytool -genkeypair -v -keystore D:\key.jks -storetype PKC…

EasyExcel两行表头

例子&#xff1a; 代码&#xff1a; StorageService localStorageService storageFactory.getLocalStorageService();String path "";// 文件信息String dateTime DateUtils.formatTimestampToString(new Date());String title "xxx统计";String fil…

MySQL之锁

MySQL之锁 锁是计算机在执行多线程或线程时用于并发访问同一共享资源时的同步机制&#xff0c;MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性 MySQL锁可以按模式分类为&#xff1a;乐观锁与悲观锁。 按粒度分可以分为全局锁、表级锁…

GoLong的学习之路,进阶,微服务之原理,RPC

其实我早就很想写这篇文章了&#xff0c;RPC是一切现代计算机应用中非常重要的思想。也是微服务和分布式的总体设计思想。只能说是非常中要&#xff0c;远的不说&#xff0c;就说进的这个是面试必问的。不管用的上不&#xff0c;但是就是非常重要。 文章目录 RPC的原理本地调用…

flutter开发实战-ValueListenableBuilder实现局部刷新功能

flutter开发实战-ValueListenableBuilder实现局部刷新功能 在创建的新工程中&#xff0c;点击按钮更新counter后&#xff0c;通过setState可以出发本类的build方法进行更新。当我们只需要更新一小部分控件的时候&#xff0c;通过setState就不太合适了&#xff0c;这就需要进行…