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 相关文章推荐
Python装饰器使用示例及实际应用例子
Mar 06 Python
在Python程序中操作文件之flush()方法的使用教程
May 24 Python
python实现判断数组是否包含指定元素的方法
Jul 15 Python
Python数据类型详解(二)列表
May 08 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
使用python去除图片白色像素的实例
Dec 12 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
Python3 如何开启自带http服务
May 18 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
simplehtmldom Doc api帮助文档
2012/03/26 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
使用python进行拆分大文件的方法
2018/12/10 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
异常和异常类的概念
2014/09/12 面试题
数据库基础的一些面试题
2012/02/25 面试题
大学生关于奋斗的演讲稿
2014/01/09 职场文书
员工工作表现评语
2014/04/26 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
公司员工管理制度
2015/08/04 职场文书
小学音乐课教学反思
2016/02/18 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python