Python实现查询剪贴板自动匹配信息的思路详解


Posted in Python onJuly 09, 2021

不想每次都要去查execl,想更方便点,更快一点。

Python实现查询剪贴板自动匹配信息的思路详解

通俗点思路:点击exe,Python 自动监控剪贴板的内容,然后正则取出IP,接着根据IP对比业务文档,获取相应的信息,然后把查询出来的内容,弹出提示,把查询出的内容写入剪贴板。

'''
功能作用:对比剪贴板类容
'''
 
import win32clipboard as w
import win32con
import xlrd
from tkinter import messagebox
import win32api, win32con
import pyperclip
import re
import sys
import os
 
# print(__file__)
 
path = os.path.dirname(os.path.abspath(__file__))
sys.intern(path)
 
 
# print(path)
# 获取剪贴板中的内容
def getText():
    w.OpenClipboard()
    d = w.GetClipboardData(win32con.CF_TEXT)
    w.CloseClipboard()
    return (d).decode('GBK')
 
 
# 设置剪贴板的类容
def set_text(aString):
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_TEXT, aString)
    w.CloseClipboard()
 
 
# 生成资源文件目录访问路径
def resource_path(relative_path):
    if getattr(sys, 'frozen', False):  # 是否Bundle Resource
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)
 
 
# 获取剪贴板中的ip,并判断是否正常
def get_ip(ss_ip):
    ipList = re.findall(r'[0-9]+(?:\.[0-9]+){3}', ss_ip)
    # print(ipList)
    if ipList:
        return ipList
    else:
        win32api.MessageBox(0, "请您检查复制是否带有IP,请重新测试", "提醒", win32con.MB_OK)
        sys.exit(0)
 
 
# 获取xls中的数据,和之前剪贴板的数据对比
def host(ss_ip):
    # 获取execl的内容,这边是根据业务来分析
    filename = resource_path(os.path.join("res", "hosts.xls"))
    # print(filename)
    # execl_hosts = './hosts.xls'
    data1 = xlrd.open_workbook(filename)
    page = data1.sheet_by_index(2)
    nrows1 = page.nrows
    ncols1 = page.ncols
    # 获取ip
    host_ip = page.col_values(10)
    app = page.col_values(1)  # 功能集群
    purpose = page.col_values(2)  # 用途
    hostname = page.col_values(11)  # 主机名称
    # print(host_ip)
 
    # 开始对比数据
    start = 0
    count = 1
    # print(ss_ip)
    if str(ss_ip[0]) not in host_ip:
        win32api.MessageBox(0, f"暂无设备{ss_ip[0]}的信息", "未知设备", win32con.MB_OK)
        sys.exit(0)
    for k, item in enumerate(host_ip, start):
        # print(k,item,ss_ip[0])
        if str(ss_ip[0]) == str(item):
            # print("正常:" + item, k)
            win32api.MessageBox(0, f"\t\t注意\n 主机ip:{item}  主机名称:{hostname[k]} \n 功能集群:{app[k]}  主机用途:{purpose[k]}",
                                "发现设备", win32con.MB_OK)
            pyperclip.copy(f"主机ip:{item}  主机名称:{hostname[k]} \n 功能集群:{app[k]}  主机用途:{purpose[k]}")
            sys.exit(0)
 
        count = count + 1
 
 
def main():
    ss_ip = getText()
    one_ip = get_ip(ss_ip)
    host(one_ip)
 
 
if __name__ == '__main__':
    main()

测试效果:

Python实现查询剪贴板自动匹配信息的思路详解

Python实现查询剪贴板自动匹配信息的思路详解

打包资源生成exe

Python打包.exe的方法大致有四种:py2exe, pyinstaller,cx_Freeze和nuitka。其中最常用的是pyinstaller。Pyinstaller本身不是python库,但依旧可以安装python库安装方式安装,生成的.exe可以跨多平台使用,也能指定图标。

我们需要把使用到的资源文件都放在一个文件夹里。本文在当前目录下新建了一个名为res的子文件夹来存放资源文件,本文假设res内的资源文件为hosts.xls

修改完.py文件后可以先运行一下,保证无误。然后通过cmd指令:

pyi-makespec -F beloved.py

生成.spec文件。如果要添加Icon等可以在这里就使用pyi-makespec --icon abc.jpg -F beloved.py语句生成spec文件。
接下来,修改.spec文件:

Python实现查询剪贴板自动匹配信息的思路详解

修改前datas=[],本文这里把它改成上图所示,意思是

将beloved.py当前目录下的res目录(及其目录中的文件)加入目标exe中,在运行时放在零时文件的根目录下,名称为res。

生成.exe文件以及其他相关文件

接下来,我们便可以放心的生成.exe文件了。执行cmd指令

pyinstaller -F beloved.spec

.exe文件生成在子文件dict中。到此便可以把.exe发给其他电脑端运行了。.exe运行比较慢,建议多等待,只要没出现错误提示就OK。

参考地址:https://blog.csdn.net/qq_44685030/article/details/105096338

到此这篇关于Python实现查询剪贴板自动匹配信息的文章就介绍到这了,更多相关Python查询剪贴板内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
python查看微信好友是否删除自己
Dec 19 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
python format 格式化输出方法
Jul 16 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
Python中关于浮点数的冷知识
Sep 22 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
Python logging模块原理解析及应用
Aug 13 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
python操作日期和时间的方法
2014/03/11 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
艺术用品:Arteza
2018/11/25 全球购物
软件工程师面试题
2012/06/25 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
运动会宣传稿100字
2015/07/23 职场文书
总经理致辞
2015/07/29 职场文书
周一给客户的问候语
2015/11/10 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书