Python實現查詢剪貼簿自動匹配資訊的思路詳解

2022-09-25 12:00:16 字數 3425 閱讀 5810

不想每次都要去查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]+)', ss_ip)

# pribaepntnt(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"暫無裝置的資訊", "未知裝置", 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: 主機名稱: \n 功能集群: 主機用途:",

"發現裝置", win32con.mb_ok)

pyperclip.copy(f"主機ip: 主機名稱: \n 功能集群: 主機用途:")

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打包.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當前目錄www.cppcns.com下的res目錄(及其目錄中的檔案)加入目標exe中,在執行時放在零時檔案的根目錄下,名稱為res。

生成.exe檔案以及其他相關檔案

接下來,我們便可以放心的生成.exe檔案了。執行cmd指令

pyinstaller -f beloved.spec

.exe檔案生成在子檔案dict中。到此便可以把.exe發給其他電腦端執行了。.exe執行比較慢,建議多等待,只要沒出現錯誤提示就ok。

參考位址:

實現通用剪貼簿思考

背景 最近發現專案組的ui庫缺少乙個通用的剪貼簿,通用的意思就是相容所有瀏覽器。但問題是目前除了ie外,其他瀏覽器對剪貼簿的支援不夠好,或者直接不支援,因此,開發乙個通用剪貼簿是很有必要的。技術選用 由於flash具有跨瀏覽器的特性,而且在客戶端的普及率達到99 因此,flash無疑是本次開發的首選...

剪貼簿延遲提交的實現

剪帖板延遲提交即程式要與其它程式交換資料使用剪帖板時,在成為剪帖板所有者時並不將資料拷貝到剪帖板中,而是將剪帖板清空,在有程式需要剪帖板資料時,window會給當前的剪帖板所有者傳送訊息,要求提供剪帖板資料。這種情況一般用在多種剪帖板格式提供時。1。首先清空剪帖板 if openclipboard ...

python剪貼簿操作 python 操作剪下板

有時候寫指令碼的時候會有作業系統剪下板的需求,就是 獲取剪下板中的字串 清空剪下板 向剪下板中寫入字串 方法包括使用 tkinter ctypes 這兩個 python 標準庫,或者安裝 qt 等第三方庫來操作剪下板。ctypes 操作剪下板 先寫 windows 系統下 ctypes 庫如何操作剪...