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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
从Python的源码来解析Python下的freeblock
May 11 Python
详解Python中用于计算指数的exp()方法
May 14 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
python实现最长公共子序列
May 22 Python
Python实现登陆文件验证方法
Oct 06 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
python 发送json数据操作实例分析
Oct 15 Python
Django框架安装方法图文详解
Nov 04 Python
Python3使用xlrd、xlwt处理Excel方法数据
Feb 28 Python
python切片作为占位符使用实例讲解
Feb 17 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
php抓取网站图片并保存的实现方法
2015/10/29 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
jquery maxlength使用说明
2011/09/09 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
Javascript函数的参数
2015/07/16 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python random模块用法解析及简单示例
2017/12/18 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
python基于property()函数定义属性
2020/01/22 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
酒店办公室文员岗位职责
2013/12/18 职场文书
英语专业毕业生自荐信范文
2013/12/31 职场文书
我的小天地教学反思
2014/04/30 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
西柏坡导游词
2015/02/05 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书