首页 > 编程语言 >如何使用Python实现自动初始化软件?再也不用一个一个打开了!

如何使用Python实现自动初始化软件?再也不用一个一个打开了!

时间:2024-09-08 12:49:51浏览次数:6  
标签:初始化 return log Python ssh file 软件 日志 加载

前前言

GitHub原创项目: How to ?icon-default.png?t=O83Ahttps://github.com/ryan-zg/python-howto-autoinit     目前提交的代码较为简单,后续还会补充更新。

前言

        我在进行Java开发的过程中,每次打开电脑就需要启动很多软件,什么IDEAVMwareXshellNginx....等等。但是每次都要一个一个打开,打开之后就用一秒,然后就关了,启动电脑又要重新操作。这也太不方便了,所以我这里使用了python实现了简单的自动初始化。

思路

        首先想要打开几个软件,不难想到,使用os, 或者subprocess,然后中间sleep那么几秒就可以实现,非常的容易。

import subprocess
subprocess.Popen([VM_EXE, VM_DOCKER_PATH])

        实际上知道 Popen() 方法中的启动路径和项目路径两个参数就可以了,启动多个软件无非是中间加上 time.sleep(),等待软件的加载然后进行后续操作,比如打开 VMware 并启动 Linux 虚拟机后需要等待加载完成后使用 Xshell 连接。

        如果出现项目很大需要较长时间加载的情况呢?虽然可以给 sleep添加更大的值,但是似乎总不能每次换一个项目就修改源代码。

        所以,我们需要 监听,或者说需要监控软件的状态,然后根据状态进行操作。

  • 对于需要加载的,一个思路是监听日志,比如 idea每次加载项目时会输入日志,根据日志打印的状态判断项目是否加载完成。日志的位置在:主菜单--帮助--在资源管理器中打开。这里的 keyword 表示的是项目加载完成后的关键字,阅读日志后可以选择 "Finished for XXXX"
def check_log_for_completion(log_file_path, keyword):
    """检查日志文件是否包含指定的关键字"""

    # 检查文件是否存在
    if not os.path.exists(log_file_path):
        return False
    with open(log_file_path, 'r', encoding='utf-8') as log_file:
        # 循环检查日志文件的末尾部分是否包含项目加载完成的关键字
        lines = log_file.readlines()
        for line in lines:
            if keyword in line:
                return True
    return False
  • 对于需要连接的,比如 linux虚拟机,我们可以尝试使用 python进行 ssh连接,然后根据返回值判断是否连接成功。
def check_ssh_connection(host, port=22, username='root', password='123456', timeout=5):
    """尝试通过 SSH 连接到虚拟机"""
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        ssh.connect(host, port=port, username=username, password=password, timeout=timeout)
        return True
    except (paramiko.ssh_exception.NoValidConnectionsError, paramiko.ssh_exception.SSHException, TimeoutError) as e:
        print(f"SSH 连接失败: {e}")
        return False
    finally:
        ssh.close()
  • .......

        这样我们得到了程序运行的状态,就可以不断等待需要的状态返回,然后进行下一步操作。

后续

        项目中还有很多 todo 待完成,以后会将功能完善,以及优化结构等。

        如果想要添加新的,需要启动的程序,目前来看不需要修改源代码,只需要添加就行,耦合度还不错。

        最后的话就是想将程序打包,只需要双击就可以完成甚至不需要打开编译器....

标签:初始化,return,log,Python,ssh,file,软件,日志,加载
From: https://blog.csdn.net/qq_61901330/article/details/142004031

相关文章

  • 【2024潇湘夜雨】WIN11_PWK_21H2.22000.3147软件选装纯净特别版9.08
    【系统简介】=============================================================1.本次更新母盘来自WIN11_PWK_21H2.22000.3147(专业工作站版).2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为2......
  • Python 语法糖:让编程更简单(续)
    Python语法糖:让编程更简单(续)6.SlicenotationSlicenotation是Python中的一种语法糖,用于从列表或字符串中获取子串或子列表。例如:numbers=[1,2,3,4,5]print(numbers[1:3])#Output:[2,3]这段代码将从numbers列表中获取索引为1到3的子列表。7.f-string......
  • 可测试,可维护,可移植:上位机软件分层设计的重要性
    互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗?有必要。本文从三个方面论述。分别是可测试,可维护,可移植。......
  • Python编程:探索有趣的代码设计模式
    Python编程是一门广泛应用的技术,无论是在数据分析、人工智能,还是在Web开发中,都扮演着不可或缺的角色。而在编写Python代码的过程中,掌握一些经典的代码设计模式,不仅能够提升编程效率,还能帮助我们更好地理解代码背后的逻辑。今天我们就来聊一聊一些有趣的Python代码设计模式,看看它们......
  • Python实践——CAN数据CRC校验计算
    一、代码功能概述这段Python代码实现了多种不同CRC(循环冗余校验)算法的计算功能。用户可以选择特定的CRC算法,然后输入数据,函数将返回该数据的CRC校验结果。可以选择以字节数组的形式(高位在前)或单个值的列表形式输出结果。二、准备工作确保你已经安装了Python环境......
  • 25届计算机毕设选题推荐-租房数据怎么分析更精准?使用Python结合Hadoop轻松搭建大数据
    博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告......
  • 软件设计之JavaWeb(1)
    软件设计之JavaWeb(1)此篇应在MySQL之后进行学习:路线图推荐:【Java学习路线-极速版】【Java架构师技术图谱】尚硅谷全新JavaWeb教程,企业主流javaweb技术栈资料可以去尚硅谷官网免费领取此章节最好学完JDBC观看学习内容:XML概述TomcatIDEA开发并部署运行WEB项目XML概......
  • 【有源码】基于python+爬虫的短视频数据分析与可视化分析flask短视频推荐系统的设计与
    注意:该项目只展示部分功能,如需了解,文末咨询即可。本文目录1.开发环境2系统设计2.1设计背景2.2设计内容3系统展示3.1功能展示视频3.2用户页面3.3管理员页面4更多推荐5部分功能代码1.开发环境开发语言:Python采用技术:flask、爬虫数据库:MySQL开发环境:P......
  • 计算机毕业设计推荐-基于python的摄影社团管理系统【python-爬虫-大数据定制】
    精彩专栏推荐订阅:在下方主页......
  • python爬虫连载15
    CSS层叠样式表CSS层叠样式表(CascadingStyleSheets),用于定义页面样式的,即如何显示HTML文件,这种内容和样式分离的设计,能够使得同一个HTML文件有不同的显示样式。CSS文件使用方式内联样式表:在HTML代码中,使用style属性指定样式。可以对不同的元素使用。示例1:<bodystyle=”background-......