Python使用PyAutoGUI實(shí)現(xiàn)桌面自動(dòng)化功能
摘要
PyAutoGUI 是一個(gè)跨平臺(tái)的桌面自動(dòng)化工具,能夠模擬鼠標(biāo)點(diǎn)擊、鍵盤輸入、屏幕截圖與圖像識(shí)別,適用于重復(fù)性桌面任務(wù)(如表單填寫、游戲操作、批量文件處理)。本集通過(guò)代碼+截圖+輸出日志的實(shí)戰(zhàn)形式,帶你掌握從基礎(chǔ)操作到復(fù)雜任務(wù)的全流程自動(dòng)化。
核心概念與代碼實(shí)戰(zhàn)
1. 基礎(chǔ)操作:鼠標(biāo)與鍵盤控制
安裝命令:
pip install pyautogui
鼠標(biāo)控制:
import pyautogui import time # 移動(dòng)鼠標(biāo)到坐標(biāo) (500, 300) pyautogui.moveTo(500, 300, duration=1) # 模擬點(diǎn)擊(左鍵單擊) pyautogui.click() # 滾輪滾動(dòng)(向上滾動(dòng) 200 單位) pyautogui.scroll(200)
鍵盤輸入:
# 輸入文本
pyautogui.write("Hello, PyAutoGUI!", interval=0.1)
# 組合鍵操作(Ctrl+C)
pyautogui.hotkey("ctrl", "c")
效果驗(yàn)證:
print(f"當(dāng)前鼠標(biāo)位置:{pyautogui.position()}") # 輸出實(shí)時(shí)坐標(biāo)
2. 截屏與圖像識(shí)別
場(chǎng)景:通過(guò)屏幕上的圖標(biāo)定位并點(diǎn)擊按鈕。
# 截取屏幕并保存
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png")
# 查找圖標(biāo)位置(需提前保存圖標(biāo)圖片)
button_location = pyautogui.locateOnScreen("submit_button.png")
if button_location:
# 計(jì)算圖標(biāo)中心點(diǎn)并點(diǎn)擊
button_center = pyautogui.center(button_location)
pyautogui.click(button_center)
else:
print("圖標(biāo)未找到!")
輸出示例:
圖標(biāo)位置:Box(left=200, top=150, width=50, height=30)
3. 腳本調(diào)試與異常處理
問(wèn)題場(chǎng)景:圖像識(shí)別失敗導(dǎo)致腳本崩潰。
解決方案:
try:
# 設(shè)置超時(shí)時(shí)間為 5 秒
button_location = pyautogui.locateOnScreen(
"save_icon.png",
confidence=0.8, # 允許 80% 相似度
grayscale=True # 灰度匹配提升速度
)
if not button_location:
raise Exception("圖標(biāo)匹配失?。?)
except Exception as e:
print(f"錯(cuò)誤:{e}")
# 回退到手動(dòng)輸入坐標(biāo)
pyautogui.click(100, 200)
調(diào)試技巧:
- 使用
pyautogui.PAUSE = 1控制操作間隔 - 啟用
pyautogui.FAILSAFE = True(鼠標(biāo)移至左上角強(qiáng)制停止腳本)
實(shí)戰(zhàn)案例
案例 1:自動(dòng)化填寫表單
場(chǎng)景:批量填寫 Excel 表格中的數(shù)據(jù)到某個(gè)桌面應(yīng)用。
import pyautogui
import pandas as pd
# 讀取 Excel 數(shù)據(jù)
data = pd.read_excel("data.xlsx")
for index, row in data.iterrows():
# 定位輸入框并填寫
pyautogui.click(300, 400) # 姓名輸入框
pyautogui.write(row["姓名"])
pyautogui.press("tab") # 跳轉(zhuǎn)到年齡輸入框
pyautogui.write(str(row["年齡"]))
# 提交表單
pyautogui.press("enter")
time.sleep(1) # 等待頁(yè)面刷新
輸出示例:
已提交姓名:張三,年齡:25 已提交姓名:李四,年齡:30
案例 2:模擬游戲中的簡(jiǎn)單操作
場(chǎng)景:自動(dòng)玩“鍵盤反應(yīng)速度”游戲。
# 監(jiān)聽屏幕特定區(qū)域的變化
game_region = (400, 200, 200, 100)
while True:
# 截取游戲區(qū)域
region_screenshot = pyautogui.screenshot(region=game_region)
# 檢測(cè)紅色方塊出現(xiàn)
if pyautogui.pixelMatchesColor(500, 250, (255, 0, 0)):
pyautogui.press("space") # 按空格鍵得分
案例 3:批量重命名文件
場(chǎng)景:將文件夾中的 100 張圖片按規(guī)則重命名。
import os
import pyautogui
# 打開文件資源管理器
os.system("explorer.exe .\\images")
time.sleep(2)
# 依次重命名文件
for i in range(1, 101):
pyautogui.hotkey("ctrl", "a") # 全選文件
pyautogui.press("f2") # 重命名
pyautogui.write(f"photo_{i:03d}") # 格式化名稱(photo_001)
pyautogui.press("enter")
time.sleep(0.5)
擴(kuò)展思考
1. PyAutoGUI 與其他工具的結(jié)合
與 Selenium 結(jié)合:
# 用 Selenium 處理網(wǎng)頁(yè),PyAutoGUI 處理下載彈窗
driver.get("https://example.com/download")
pyautogui.press("enter") # 自動(dòng)確認(rèn)下載對(duì)話框
打包為可執(zhí)行文件:
pip install pyinstaller pyinstaller --onefile your_script.py
2. 安全性和法律合規(guī)性
- 風(fēng)險(xiǎn)提示:
- 避免自動(dòng)化操作金融交易、社交賬號(hào)等敏感場(chǎng)景
- 部分軟件(如游戲)可能禁止自動(dòng)化腳本
- 合規(guī)建議:
- 僅用于個(gè)人效率提升或授權(quán)場(chǎng)景
- 遵守《計(jì)算機(jī)軟件保護(hù)條例》和平臺(tái)規(guī)則
總結(jié)
通過(guò)本實(shí)戰(zhàn),你已掌握:
- PyAutoGUI 的核心操作(鼠標(biāo)、鍵盤、圖像識(shí)別)
- 復(fù)雜任務(wù)的異常處理與調(diào)試技巧
- 從表單填寫到游戲模擬的完整案例
- 自動(dòng)化腳本的法律邊界與安全實(shí)踐
以上就是Python使用PyAutoGUI實(shí)現(xiàn)桌面自動(dòng)化功能的詳細(xì)內(nèi)容,更多關(guān)于Python PyAutoGUI桌面自動(dòng)化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python json load json 數(shù)據(jù)后出現(xiàn)亂序的解決方案
今天小編就為大家分享一篇python json load json 數(shù)據(jù)后出現(xiàn)亂序的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python 不以科學(xué)計(jì)數(shù)法輸出的方法
今天小編就為大家分享一篇python 不以科學(xué)計(jì)數(shù)法輸出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Python計(jì)算程序運(yùn)行時(shí)間的方法
這篇文章主要介紹了Python計(jì)算程序運(yùn)行時(shí)間的方法,分別記錄起始時(shí)間與結(jié)束時(shí)間,計(jì)算兩者之間的差值來(lái)獲得程序的運(yùn)行時(shí)間,需要的朋友可以參考下2014-12-12
Python3實(shí)現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼
這篇文章主要介紹了Python3實(shí)現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02

