zoukankan      html  css  js  c++  java
  • Python实现查询剪贴板自动匹配信息

    Python实现查询剪贴板自动匹配信息

    前提:业务IP太多,每个有不同的主机名和不同的功能。

                不想每次都要去查execl,想更方便点,更快一点。

    通俗点思路:点击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"		注意
     主机ip:{item}  主机名称:{hostname[k]} 
     功能集群:{app[k]}  主机用途:{purpose[k]}",
                                    "发现设备", win32con.MB_OK)
                pyperclip.copy(f"主机ip:{item}  主机名称:{hostname[k]} 
     功能集群:{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()
    

    测试效果:

    打包资源生成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文件:

    修改前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

    人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。
  • 相关阅读:
    让你爱不释手的图片浮动效果
    Polymer API开发指南 (二)(翻译)
    基于HTML5的拓扑图编辑器(2)
    kbengine开源分布式游戏服务端引擎
    Qunee for HTML5 v1.6新版本发布
    [转载] Link prefetch
    小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载三(通过实例来体验生命周期)
    云集,让 web app 像 native app 那样运行(雄起吧,Web 开发者)
    Android设置ToolBar的title文字居中显示
    Task 'assembleXXXDebug' not found in project ':app'.的解决方法
  • 原文地址:https://www.cnblogs.com/heian99/p/14999354.html
Copyright © 2011-2022 走看看