当前位置: 首页 > ds >正文

使用Python脚本执行Git命令

说明:本文介绍如何使用Python脚本在某个目录下执行Git命令

编码

直接上代码

import os
import subprocessdef open_git_bash_and_run_command(folder_path, git_command):# 检查文件夹路径是否存在if not os.path.exists(folder_path):print(f"错误:文件夹路径不存在:{folder_path}")returnif not os.path.isdir(folder_path):print(f"错误:路径不是一个文件夹:{folder_path}")return# Git Bash 的常见安装路径git_bash_paths = r""try:full_command = f'cd "{folder_path}" && {git_command}'# 执行subprocess.run([git_bash_paths, "-c", full_command],check=True  # 如果命令返回非零状态码,则抛出异常)print(f"【命令在 '{folder_path}' 中成功执行】")print("==========================================================================")except subprocess.CalledProcessError as e:print(f"命令执行失败,返回码: {e.returncode}")except FileNotFoundError as e:print(f"无法启动 Git Bash: {e}")except Exception as e:print(f"发生未知错误: {e}")if __name__ == "__main__":# 项目路径folder_path = r""# Git 命令,用三引号转义git_command_template = """git status"""# Git 命令校验,以 git 开头if not git_command_template.lower().startswith("git "):print("警告:命令似乎不是以 'git' 开头,但仍将尝试执行。")# 执行open_git_bash_and_run_command(folder_path, git_command_template)

其中,加上需要执行的目录

    # 项目路径folder_path = r"C:\Users\10765\Documents\info\code\now\easyexcel"

加上电脑上安装的 Git 执行程序的地址

    # Git Bash 的常见安装路径git_bash_paths = r"C:\Program Files\Git\bin\bash.exe"

执行,展示该目录下执行 Git 命令 git status 的返回结果

在这里插入图片描述

更近一步

来点难度的,查看多个 Git 文件夹本周一~周五的日志记录,git 命令如下:

git log --since="2025-08-25" --until="2025-08-29"

代码如下:

import os
import subprocess
from datetime import datetime, timedeltadef open_git_bash_and_run_command(folder_path, git_command):# 检查文件夹路径是否存在if not os.path.exists(folder_path):print(f"错误:文件夹路径不存在:{folder_path}")returnif not os.path.isdir(folder_path):print(f"错误:路径不是一个文件夹:{folder_path}")return# Git Bash 的常见安装路径git_bash_paths = r"C:\Program Files\Git\bin\bash.exe"try:full_command = f'cd "{folder_path}" && {git_command}'# 执行subprocess.run([git_bash_paths, "-c", full_command],check=True  # 如果命令返回非零状态码,则抛出异常)print(f"【命令在 '{folder_path}' 中成功执行】")print("==========================================================================")except subprocess.CalledProcessError as e:print(f"命令执行失败,返回码: {e.returncode}")except FileNotFoundError as e:print(f"无法启动 Git Bash: {e}")except Exception as e:print(f"发生未知错误: {e}")def get_weekdays_of_current_week():# 获取今天的日期today = datetime.today()# 计算今天是星期几 (0=Monday, 1=Tuesday, ..., 6=Sunday)weekday = today.weekday()# 计算本周一的日期# 用今天的日期减去 weekday 天,就得到周一monday = today - timedelta(days=weekday)# 生成周一到周五的日期weekdays = []for i in range(5):  # 0=Monday, 1=Tuesday, 2=Wednesday, 3=Thursday, 4=Fridayday = monday + timedelta(days=i)# 格式化为 yyyy-MM-ddformatted_date = day.strftime("%Y-%m-%d")weekdays.append(formatted_date)return weekdaysif __name__ == "__main__":# 项目路径folder_path = [r"C:\Users\10765\Documents\info\code\now\yudao-cloud",r'C:\Users\10765\Documents\info\code\now\yudao-ui-admin-vue3']# 计算日期,本周一~周五week_dates = get_weekdays_of_current_week()# Git 命令git_command_template = """git log --since={since} --until={until}"""# 使用 .format() 方法替换占位符git_command = git_command_template.format(since=week_dates[0], until=week_dates[4])# Git 命令校验,以 git 开头if not git_command_template.lower().startswith("git "):print("警告:命令似乎不是以 'git' 开头,但仍将尝试执行。")# 循环执行for i in folder_path:open_git_bash_and_run_command(i, git_command)

其中,get_weekdays_of_current_week() 用于计算本周的日期,git 命令中包含双引号的用 .format() 替换,执行效果如下,本周没有日志

在这里插入图片描述

python 脚本在 windows 系统中的好处是能和 bat 程序一样,直接双击运行,因此如果工作中有需要定期执行 git 命令的场景,可以使用写一个 python 脚本,再配置环境变量,最后就能直接在运行中敲程序文件名执行,非常方便。


如下:

给脚本所在的文件夹配置了环境变量后,敲脚本文件名执行

在这里插入图片描述

弹出展示执行结果

在这里插入图片描述

需要注意在程序末尾加这一行,不然执行窗口会一闪而过

在这里插入图片描述

http://www.xdnf.cn/news/19283.html

相关文章:

  • vben admin5组件文档(豆包版)---VbenTree
  • 【C++】C++入门——(上)
  • 用docker实现Redis主从配置
  • Android14 init.qcom.usb.rc详解
  • 2025年渗透测试面试题总结-38(题目+回答)
  • WebRTC音频QoS方法五(音频变速算法之Expand算法实现)
  • 订餐后台管理系统 -day03 登录模块
  • Electron 项目来实现文件下载和上传功能(AI)
  • 前端网页源码模板 静态HTML源码网站
  • 【C++八股文】计算机网络篇
  • 企业级-搭建CICD(持续集成持续交付)实验手册
  • Web开发工具一套式部署Maven/Nvm/Mysql/Redis
  • 【问题】Windows的dockerdesktop/wsl虚拟化支持问题总结
  • 2025年OE SCI2区TOP,势场蚁群算法+无人水面艇路径规划,深度解析+性能实测
  • RustDesk(跨平台远程桌面软件) v1.4.1 中文绿色版
  • 根据并发和响应延迟,实现语音识别接口自动切换需求
  • 「日拱一码」058 机器学习——监督学习
  • CesiumJS 封装 - 初始化与配置
  • 《零基础入门AI:YOLOv2算法解析》
  • 【菜狗每日记录】VSCode远程连接多个账号、创建环境
  • Linux Shell 脚本基础002
  • Day16(前端:JavaScript基础阶段)
  • 8月科技前沿速递 | 存算一体开发者社区月报
  • HCIE考试截图及作答文件上传流程
  • Baseline|基线
  • 在vue/react项目中单独引入一个js文件,在js文件中使用DOMContentLoaded函数querySelectorAll为空数组解决办法
  • OpenCV轮廓近似与Python命令行参数解析
  • 第四十七天(jndi注入)
  • 柳州市委常委、统战部部长,副市长潘展东率队首访深兰科技集团新总部,共探 AI 赋能制造大市与东盟合作新局
  • 前端vue框架实现反向代理详解