不想每次都要去查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 庫如何操作剪...