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设置默认编码为utf8的方法
Jul 01 Python
Python实现两款计算器功能示例
Dec 19 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
浅谈python之新式类
Aug 12 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 Python
python 实现端口扫描工具
Dec 18 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
python 自动刷新网页的两种方法
Apr 20 Python
对象析构函数__del__在Python中何时使用
Mar 22 Python
如何利用Python实现一个论文降重工具
python实现MD5进行文件去重的示例代码
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 #Python
Python中Selenium对Cookie的操作方法
Python常用配置文件ini、json、yaml读写总结
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
You might like
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
jQuery live
2009/05/15 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
canvas绘制七巧板
2017/02/03 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
17个Python小技巧分享
2015/01/23 Python
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
浅谈python标准库--functools.partial
2019/03/13 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
教师申诉制度
2014/01/29 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
民族学专业求职信
2014/07/28 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
python异步的ASGI与Fast Api实现
2021/07/16 Python
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL