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读取键盘输入的2种方法
Jun 16 Python
关于python2 csv写入空白行的问题
Jun 22 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
python集合的创建、添加及删除操作示例
Oct 08 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
pycharm 关掉syntax检查操作
Jun 09 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集成FCK的函数代码
2008/09/27 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
从php核心代码分析require和include的区别
2011/01/02 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
举例讲解Python中is和id的用法
2015/04/03 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python获取linux系统信息的三种方法
2020/10/14 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
车间主任岗位职责
2014/03/16 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
pytorch 使用半精度模型部署的操作
2021/05/24 Python
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis