Python实现查询剪贴板自动匹配信息的思路详解
作者:南宫乘风 发布时间:2022-09-16 06:35:41
不想每次都要去查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"\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()
测试效果:
打包资源生成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
来源:https://blog.csdn.net/heian_99/article/details/118579426


猜你喜欢
- 假设有这样一个需求,你需要从 Redis 中持续不断读取数据,并把这些数据写入到 MongoDB 中。你可能会这样写代码:import js
- Cumsum :计算轴向元素累加和,返回由中间结果组成的数组重点就是返回值是“由中间结果组成的数组”以下代码在python3.6版本运行成功
- 一、准备工作安装最新的Go1、由于Google被墙的原因,如果没有VPN的话,就到这里下载:http://www.golangtc.com/
- OpenCV介绍OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Ma
- 最近在学习Python,看到网上用Python将图片转换成字符画便来学习一下题目意思是,程序读入一个图片,以txt格式输出图片对应的字符画,
- 自己前端开发中常用到的一些技巧及问题解决方法,会常更新,希望对前端路上的朋友有帮助。1、文章标题列表中日期居右显示的方法(提供了两种方法,使
- 两张表,A表中的记录B表中不一定有。左连接:关注左边,右边没有就为空。右连接:关注右边,左边没有就为空。内连接:返回交集例如:student
- 在待测试的私有函数所在的包内,新建一个xx_test.go文件书写方式如下:import ( "github.com/stretc
- git push时卡住(长时间不报错也不自动退出)大致问题:之前用http克隆代码时,之前提交到自己的fork仓(仓)时都是稳稳进行,突然有
- 有时候我们用的一些pdf资料是没有目录的,这样找寻我们想到的东西比较麻烦。本篇文章就为大家带来python来生成pdf目录书签的方法。首先,
- 一、实例代码HTML:<!DOCTYPE html><html lang="en"><he
- 打开php.ini,首先找到;;;;;;;;;;;;;;;;; file uploads ;;;;;;;;;;;;;;;;;区域,有影响文件
- 上一章节我们学习了基础的定义 PPT 的方法以及每一页中的样式,这节课我们将真正的在 PPT 中添加内容,学习一下 pptx 的段落的使用。
- 说明Django 默认的用户表 auth_user 包含 id, password, last_login, is_superuser, u
- 今天用Python提取了Linux内核源代码的目录树结构,没有怎么写过脚本程序,我居然折腾了2个小时,先是如何枚举出给定目录下的所有文件和文
- python中使用.py配置文件 一、格式:创建一个config.py文件在文件中加配置:DEBUG=Truedm_connect = {
- 代码如下:SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* by kudychen 2
- 前言开发某款app时,产品给的UI原型图上有个分为三段的圆环图,本来以为使用echarts应该会很好做的,主要考虑移动端echarts的兼容
- Python 3.8是Python语言的最新版本,它适合用于编写脚本、自动化以及机器学习和Web开发等各种任务。现在Python 3.8已经
- 一、super( ) 的用途了解 super() 函数之前,我们首先要知道 super() 的用途是啥?主要用来在子类中调用父类的方法。多用