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 Socket编程入门教程
Jul 11 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
详解基于Scrapy的IP代理池搭建
Sep 29 Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 Python
用python批量移动文件
Jan 14 Python
python 中[0]*2与0*2的区别说明
May 10 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
两种php调用Java对象的方法
2006/10/09 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP curl使用实例
2015/07/02 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
js的回调函数详解
2015/01/05 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
进一步理解Python中的函数编程
2015/04/13 Python
python实现复制文件到指定目录
2019/10/16 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
红旗团支部事迹材料
2014/01/27 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
质量主管工作职责
2014/09/26 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs