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提取页面内url列表的方法
May 25 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
python树莓派红外反射传感器
Jan 21 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
Python3视频转字符动画的实例代码
Aug 29 Python
Python操作Jira库常用方法解析
Apr 10 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
python/golang实现循环链表的示例代码
Sep 14 Python
Django多数据库联用实现方法解析
Nov 12 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
PHP 实用代码收集
2010/01/22 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
php结合js实现多条件组合查询
2019/05/28 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
Python算术运算符实例详解
2017/05/31 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
django实现类似触发器的功能
2019/11/15 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
大学毕业生工作的自我评价
2013/10/01 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技