IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python PyQt5实现vivado完成implementation后邮件提醒的demo -> 正文阅读

[Python知识库]python PyQt5实现vivado完成implementation后邮件提醒的demo

作者:recommend-item-box type_blog clearfix

1 功能

ug904中有提到,如果要使用远程主机启动一个或多个job,选择“在远程主机上启动运行(仅Linux)”。我如果要使用另一台windows主机专门跑程序,需要开远程控制监视运行的情况或者经常去查看,为了解决这个问题,用python pyqt5实现了一个简单的demo。

实现的功能:间隔1分钟监视vivado implementation的log文件,如果发现log中有INFO: [Common 17-206] Exiting Vivado at xxx的信息,就把之前的一些关键步骤以及搜索到的时间发送给接收的邮件地址。

2 代码

2.1 介绍

import sys
import re
import threading
import time
import win32ui
import smtplib
from email.mime.text import MIMEText

def fun_sendmail(list_info):
    print("entry fun_sendmail")
    #设置服务器所需信息
    #163邮箱服务器地址
    mail_host = 'smtp.163.com'  
    #163用户名
    mail_user = '137xxxxxxxx'  
    #密码(部分邮箱为IMAP/SMTP授权码) 
    mail_pass = 'xxxxxxxxxxxxxx'   
    #邮件发送方邮箱地址
    sender = '137xxxxxxxx@163.com'  
    #邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
    receivers = ['163xxxxxxx@qq.com']  

    #设置email信息
    #邮件内容设置
    text_str = ''.join(list_info)
    message = MIMEText(text_str,'plain','utf-8')
    #邮件主题       
    message['Subject'] = "程序跑完啦!" 
    #发送方信息
    message['From'] = sender 
    #接受方信息     
    message['To'] = receivers[0]   
    print(message)
    #登录并发送邮件
    try:
        smtpObj = smtplib.SMTP() 
        #连接到服务器
        smtpObj.connect(mail_host,25)
        #登录到服务器
        smtpObj.login(mail_user,mail_pass) 
        #发送
        smtpObj.sendmail(
            sender,receivers,message.as_string()) 
        #退出
        smtpObj.quit() 
        print('success')
    except smtplib.SMTPException as e:
        print('error',e)

def fun_serch_keyword(path):
    print("entry fun_serch_keyword")
    global list_info
    file = open(path, mode = 'r')
    info_index = 0
    info_num = len(list_info)
    time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    line = file.readline()
    while line:
        line = file.readline() 
        if(re.findall('Starting|Ending|Exiting', line)):
            info_index += 1
            if info_index > info_num:
                list_info.append(time_str+'\t'+line)
                print(line)
        if(re.findall('Exiting', line)):
            fun_sendmail(list_info)
            sys.exit(0)
    file.close()

def fun_timer():
    print("entry fun_timer")
    fun_serch_keyword(impl_runme_log_path)
    global timer
    timer = threading.Timer(60, fun_timer)
    timer.start()

list_info = []
dlg = win32ui.CreateFileDialog(1) 
dlg.SetOFNInitialDir('')          
dlg.DoModal()
impl_runme_log_path = dlg.GetPathName()
print(impl_runme_log_path)
timer = threading.Timer(1, fun_timer)
timer.start()

程序逻辑:

  1. 打开文件对话框,选择runme.log文件的路径。
  2. 嵌套例化60s计时器,每隔60s完成一次runme.log文件的关键词查找。
  3. 保存含有"Starting|Ending|Exiting"的信息。
  4. 如果有"Exiting"关键词的信息,则发送邮件。
  5. 将关键词的信息一起发送给接收邮箱。

将邮箱信息改成自己的即可使用。环境:

  • Python 3.8.8
  • PyQt5

2.2 使用

这里测试了163邮箱,获得IMAP/SMTP授权码的步骤:
在这里插入图片描述

在这里插入图片描述

3 打包发布

为了方便没有安装环境的主机使用,使用PyQt5写了一个界面,然后打包了一下,由于本人也是小白,所以程序可能有很多bug,目前仅测试过几次。程序介绍如下:
在这里插入图片描述

  • 邮箱授权码使用AES算法加密,其实自己用不加密也行,为了学习python加了一下。
  • 参数存储使用QSettings实现,存储在运行文件的路径下的“config.ini”中。如果第一次运行,需要输入参数,之后就会自动加载的,其中只有授权码是加密的。
  • 运行逻辑
    • 首先点击选择路径选择当前implementation的路径
    • 点击开始,会将参数存储起来,并且查询一下选择的路径下有没有runme.log,如果没有就新建一个空白文档。因为如果没跑过implementation,或者刚开始跑的时候是没有的。
    • 如果已经有了日志文件无法新建了说明已经开始跑了,这时就直接开始每隔60s查询其中的关键词。
    • 如果查询到exiting vivado,则发送邮件。邮件的内容如下:
      在这里插入图片描述

4 附件

在这里插入图片描述

链接:https://pan.baidu.com/s/1-9bd03BSd17GHTNCZm7DzQ
提取码:open

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:49:10  更:2021-11-26 08:50:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:53:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码