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 Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
使用Flask集成bootstrap的方法
Jul 24 Python
Python中new方法的详解
Jan 15 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
python实现简单区块链结构
Apr 25 Python
Python操作CSV格式文件的方法大全
Jul 15 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
进一步了解Python中的XML 工具
2015/04/13 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
django Admin文档生成器使用详解
2019/07/22 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Python标准库itertools的使用方法
2020/01/17 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
python三引号如何输入
2020/07/06 Python
python下载的库包存放路径
2020/07/27 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
公司财务自我评价分享
2013/12/17 职场文书
高一政治教学反思
2014/01/28 职场文书
交通事故检查书范文
2014/01/30 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
2015年教研工作总结
2015/05/23 职场文书