不想每次都要去查execl,想更方便點(diǎn),更快一點(diǎn)。
通俗點(diǎn)思路:點(diǎn)擊exe,Python 自動(dòng)監(jiān)控剪貼板的內(nèi)容,然后正則取出IP,接著根據(jù)IP對比業(yè)務(wù)文檔,獲取相應(yīng)的信息,然后把查詢出來的內(nèi)容,彈出提示,把查詢出的內(nèi)容寫入剪貼板。
'''
功能作用:對比剪貼板類容
'''
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)
# 獲取剪貼板中的內(nèi)容
def getText():
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return (d).decode('GBK')
# 設(shè)置剪貼板的類容
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, "請您檢查復(fù)制是否帶有IP,請重新測試", "提醒", win32con.MB_OK)
sys.exit(0)
# 獲取xls中的數(shù)據(jù),和之前剪貼板的數(shù)據(jù)對比
def host(ss_ip):
# 獲取execl的內(nèi)容,這邊是根據(jù)業(yè)務(wù)來分析
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) # 主機(jī)名稱
# print(host_ip)
# 開始對比數(shù)據(jù)
start = 0
count = 1
# print(ss_ip)
if str(ss_ip[0]) not in host_ip:
win32api.MessageBox(0, f"暫無設(shè)備{ss_ip[0]}的信息", "未知設(shè)備", 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 主機(jī)ip:{item} 主機(jī)名稱:{hostname[k]} \n 功能集群:{app[k]} 主機(jī)用途:{purpose[k]}",
"發(fā)現(xiàn)設(shè)備", win32con.MB_OK)
pyperclip.copy(f"主機(jī)ip:{item} 主機(jī)名稱:{hostname[k]} \n 功能集群:{app[k]} 主機(jī)用途:{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可以跨多平臺使用,也能指定圖標(biāo)。
我們需要把使用到的資源文件都放在一個(gè)文件夾里。本文在當(dāng)前目錄下新建了一個(gè)名為res的子文件夾來存放資源文件,本文假設(shè)res內(nèi)的資源文件為hosts.xls
修改完.py文件后可以先運(yùn)行一下,保證無誤。然后通過cmd指令:
pyi-makespec -F beloved.py
生成.spec文件。如果要添加Icon等可以在這里就使用pyi-makespec --icon abc.jpg -F beloved.py語句生成spec文件。
接下來,修改.spec文件:
修改前datas=[],本文這里把它改成上圖所示,意思是
將beloved.py當(dāng)前目錄下的res目錄(及其目錄中的文件)加入目標(biāo)exe中,在運(yùn)行時(shí)放在零時(shí)文件的根目錄下,名稱為res。
生成.exe文件以及其他相關(guān)文件
接下來,我們便可以放心的生成.exe文件了。執(zhí)行cmd指令
pyinstaller -F beloved.spec
.exe文件生成在子文件dict中。到此便可以把.exe發(fā)給其他電腦端運(yùn)行了。.exe運(yùn)行比較慢,建議多等待,只要沒出現(xiàn)錯(cuò)誤提示就OK。
參考地址:https://blog.csdn.net/qq_44685030/article/details/105096338
到此這篇關(guān)于Python實(shí)現(xiàn)查詢剪貼板自動(dòng)匹配信息的文章就介紹到這了,更多相關(guān)Python查詢剪貼板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!