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 Deque 模块使用详解
Jul 04 Python
Python多线程爬虫简单示例
Mar 04 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
降低python版本的操作方法
Sep 11 Python
变长双向rnn的正确使用姿势教学
May 31 Python
Python实现视频自动打码的示例代码
Apr 08 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
phpwind中的数据库操作类
2007/01/02 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python爬取三国演义的实现方法
2016/09/12 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
SQL Server面试题
2016/10/17 面试题
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
导游词之河北邯郸
2019/09/12 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python
能让Python提速超40倍的神器Cython详解
2021/06/24 Python