事情是這樣的:昨天晚上,女朋友讓我十二點(diǎn)催她睡覺(jué)。
不過(guò),可是我實(shí)在太困了,熬不下去…… 是吧?女朋友哪有睡覺(jué)重要?
但,女朋友的命令,我是不敢違抗的……
但是睡覺(jué)也不能缺! 這時(shí)候我們?cè)撛趺崔k呢?是時(shí)候讓Python登場(chǎng)了!
責(zé)任編輯:haq 但,女朋友的命令,我是不敢違抗的……
但是睡覺(jué)也不能缺! 這時(shí)候我們?cè)撛趺崔k呢?是時(shí)候讓Python登場(chǎng)了!
Python登場(chǎng)
這次我們來(lái)做一個(gè)自動(dòng)發(fā)送微信的程序,在深夜十二點(diǎn)的時(shí)候給女朋友發(fā)去消息,也算是盡了一個(gè)男朋友的義務(wù)了。安裝和導(dǎo)入
我們需要兩個(gè)模塊:apscheduler,pyautogui快捷鍵 Windows+r 打開(kāi)運(yùn)行控制框,輸入 cmd,進(jìn)入命令行,輸入:pip install apscheduler
pipinstallpyautogui
導(dǎo)入:import pyautogui
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler # 阻塞當(dāng)前進(jìn)程的調(diào)度器
# blocking類型調(diào)度器會(huì)阻塞當(dāng)前進(jìn)程,若你想要后臺(tái)運(yùn)行的調(diào)度器,可以使用以下代碼:
#fromapscheduler.schedulers.backgroundimportBackgroundScheduler
pyautogui
首先我們來(lái)實(shí)現(xiàn)自動(dòng)發(fā)送消息pyautogui 是一個(gè)非常強(qiáng)大的庫(kù),可以操作鼠標(biāo)和鍵盤。我們將用它來(lái)完成自動(dòng)操作電腦。先來(lái)做一些基本設(shè)置:pyautogui.PAUSE=1#設(shè)置每一步操作的間隔(秒),可防止操作太快
然后我們登錄微信,最小化。接下來(lái)我們把鼠標(biāo)放到微信的任務(wù)欄圖標(biāo)上,運(yùn)行以下語(yǔ)句,獲取此時(shí)光標(biāo)的坐標(biāo),返回一個(gè)Point對(duì)象:print(pyautogui.position()) # 打印坐標(biāo),Point(x=148, y=879)
icon_position=pyautogui.position()#Point(x=148,y=879)
打開(kāi)微信,選擇女朋友的回話窗口,將鼠標(biāo)放在輸入框上,同樣獲取光標(biāo)坐標(biāo),為了將焦點(diǎn)鎖定到輸入框以方便待會(huì)的輸入。 print(pyautogui.position()) # 打印坐標(biāo),Point(x=174, y=751)
entry_position=pyautogui.position()#Point(x=174,y=751)
接下來(lái),控制程序依次點(diǎn)擊這兩個(gè)點(diǎn):pyautogui.click(icon_position) # 默認(rèn)左鍵單擊
# pyautogui.click(148, 879)
pyautogui.click(entry_position)
#pyautogui.click(174,751)
打開(kāi)微信并鎖定焦點(diǎn)后,我們開(kāi)始輸入文本。
輸入文本可以有兩種方式:-
pyautogui.typewrite(['o', 'n', 'e', 'enter'])
-
pyautogui.typewrite('You can type multiple letters in this way')
pyautogui.typewrite([*list('zhengzai'),*list('jinxing'),'shift',*list('pyautogui'),'shift',*list('shiyan'),'enter'],0.1)#第一個(gè)參數(shù)是輸入文本,第二個(gè)是輸入每個(gè)字符的間隔時(shí)間
為了使我們的操作更加人模狗樣像人的操作,我么來(lái)加上移動(dòng)鼠標(biāo)的代碼:pyautogui.moveTo(icon_position, duration=2) # duration為執(zhí)行時(shí)長(zhǎng),可選
pyautogui.click(icon_position)
pyautogui.moveTo(entry_position, duration=2)
pyautogui.click(entry_position)
pyautogui.typewrite([*list('zhengzai'),*list('jinxing'),'shift',*list('pyautogui'),'shift',*list('shiyan'),'enter'],0.1)#第二個(gè)參數(shù)為按下每一個(gè)字母的間隔,可選
看看效果: 當(dāng)然,若是你要輸入的內(nèi)容實(shí)在很多,又嫌麻煩,可以通過(guò)復(fù)制粘貼來(lái)實(shí)現(xiàn):
import pyperclip
pyperclip.copy('正在進(jìn)行發(fā)中文試驗(yàn),看到請(qǐng)忽略,更不要罵傻逼') # 復(fù)制
pyautogui.hotkey('ctrl', 'v') # 按下組合鍵的方法,ctrl+v粘貼
pyautogui.press('enter')#按下按鍵
這樣,我們便完成了自動(dòng)發(fā)送微信消息的功能了。apscheduler
APScheduler 是一個(gè)Python庫(kù),可實(shí)現(xiàn)延遲調(diào)度要執(zhí)行Python代碼的功能,可以只執(zhí)行一次,也可以定期執(zhí)行。可以隨時(shí)添加新任務(wù)或刪除舊任務(wù)。能夠十分方便地進(jìn)行定時(shí)任務(wù)。
scheduler = BlockingScheduler() # 實(shí)例化一個(gè)調(diào)度器scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # 添加任務(wù)scheduler.start()
add_job 方法在這里傳了 3 個(gè)參數(shù),第一個(gè)為到時(shí)間后要執(zhí)行的函數(shù),第二個(gè)為觸發(fā)器的類型。這里選用的是 date 觸發(fā)器,特定的時(shí)間點(diǎn)觸發(fā),作業(yè)任務(wù)只會(huì)執(zhí)行一次。第三個(gè)參數(shù) run_date 就是執(zhí)行的時(shí)間。在這前我已經(jīng)把自動(dòng)發(fā)送消息的代碼封裝為了 main 函數(shù),只需到時(shí)候調(diào)用即可。完整代碼
import pyautogui
import pyperclip
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
def main():
pyautogui.PAUSE = 0
icon_position = pyautogui.Point(x=148, y=879) # 任務(wù)欄圖標(biāo)位置
entry_position = pyautogui.Point(x=174, y=751) # 輸入框位置
pyautogui.moveTo(icon_position, duration=1) # duration為執(zhí)行時(shí)長(zhǎng),可選
pyautogui.click(icon_position)
pyautogui.moveTo(entry_position, duration=0.7)
pyautogui.click(entry_position)
pyperclip.copy('快去睡覺(jué)')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
pyperclip.copy('笨豬')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
scheduler = BlockingScheduler() # 實(shí)例化
scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # 添加任務(wù)
scheduler.start()
完成啦!現(xiàn)在可以去睡覺(jué)了。結(jié)果
第二天早上起床,我被我媽媽罵了一頓,問(wèn)我為什么午夜12點(diǎn)的時(shí)候電腦還亮著,而且還在自己發(fā)微信!不過(guò),好在女朋友沒(méi)丟,我成功完成了女朋友的任務(wù)! 好啦,這篇文章就到這里了。以上就是我分享的全部?jī)?nèi)容,感謝閱讀!原文鏈接:https://blog.csdn.net/weixin_52132159/article/details/119785717
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
代碼
+關(guān)注
關(guān)注
30文章
4823瀏覽量
68898 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
84951
原文標(biāo)題:女朋友讓我深夜十二點(diǎn)催她睡覺(jué),我用Python輕松搞定
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用Python進(jìn)行串口通信的案例
當(dāng)然!以下是一個(gè)使用Python進(jìn)行串口通信的簡(jiǎn)單示例。這個(gè)示例展示了如何配置串口、發(fā)送數(shù)據(jù)以及接收數(shù)據(jù)。我們將使用 pyserial 庫(kù),這是一
Python環(huán)境下的代理服務(wù)器搭建與自動(dòng)化管理
在Python環(huán)境下搭建與自動(dòng)化管理代理服務(wù)器是一項(xiàng)涉及網(wǎng)絡(luò)編程和自動(dòng)化技術(shù)的綜合任務(wù)。
socket 發(fā)送和接收數(shù)據(jù)方法
1. Socket 基本概念 在網(wǎng)絡(luò)編程中,socket 是一個(gè)通信端點(diǎn)。它允許程序發(fā)送和接收數(shù)據(jù)。根據(jù)通信協(xié)議的不同,socket 可以分為以下幾種類型: 流式 socket
Python代理技術(shù)詳解:從入門到進(jìn)階
Python代理技術(shù)是一種在網(wǎng)絡(luò)編程中廣泛使用的技術(shù),它允許通過(guò)代理服務(wù)器發(fā)送和接收網(wǎng)絡(luò)請(qǐng)求。
如何用運(yùn)放設(shè)計(jì)一個(gè)高頻的壓控電流源?
請(qǐng)教一下TI的各位工程師,如何用運(yùn)放設(shè)計(jì)一個(gè)高頻的壓控電流源?要求輸出電流0-500mA,負(fù)載5-10Ω,頻率1MHz-10MHz。
發(fā)表于 08-14 07:06
使用Python進(jìn)行Ping測(cè)試
在網(wǎng)絡(luò)工程中,Ping測(cè)試是一種常用的網(wǎng)絡(luò)診斷工具,用于檢查網(wǎng)絡(luò)連接的可達(dá)性和響應(yīng)時(shí)間。Ping測(cè)試通過(guò)向目標(biāo)主機(jī)發(fā)送ICMP(Internet Control Message Protocol
從Esp8266發(fā)送文件到Python-TCP-Server速度很慢的原因?
我取得了以下成就:
我有一個(gè) Teensey-Ultimate GPS sheild-esp8266 設(shè)置。我正在嘗試使用 TCP 將存儲(chǔ)在 SD 卡中的 1Mb 文件發(fā)送到本地 python
發(fā)表于 07-19 10:44
opencv-python和opencv一樣嗎
不一樣。OpenCV(Open Source Computer Vision Library)是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),它提供了大量的圖像和視頻處理功能。OpenCV-Pytho
python訓(xùn)練出的模型怎么調(diào)用
在Python中,訓(xùn)練出的模型可以通過(guò)多種方式進(jìn)行調(diào)用。 1. 模型保存與加載 在Python中,訓(xùn)練好的模型需要被保存,以便在其他程序或會(huì)話中使用。以下是一些常用的模型保存和加載方法
用pycharm進(jìn)行python爬蟲(chóng)的步驟
提供了許多有用的功能,如代碼自動(dòng)完成、調(diào)試和版本控制等。您可以從JetBrains的官方網(wǎng)站下載PyCharm,并根據(jù)您的需求選擇免費(fèi)社區(qū)版或付費(fèi)專業(yè)版。 創(chuàng)建一個(gè)新的Python項(xiàng)目
如何用STM8S001J3設(shè)計(jì)一個(gè)手?jǐn)[控制LED燈的程序?
我是初學(xué)者,想試試如何用STM8S001J3設(shè)計(jì)一個(gè)手?jǐn)[控制LED燈的程序,但是我一點(diǎn)都無(wú)從入手,想知道如何入門
發(fā)表于 04-23 07:33
Python自動(dòng)化測(cè)試框架及其應(yīng)用
Pytest是一個(gè)非常成熟的全功能的Python測(cè)試框架,與python自帶的unittest測(cè)試框架類似,但是比unittest框架使用起來(lái)更簡(jiǎn)潔,功能更強(qiáng)大。
如何用Arduino制作一個(gè)簡(jiǎn)易自動(dòng)喂魚(yú)器
如果你家里養(yǎng)有魚(yú),并想找到一種自動(dòng)化喂食的方法,這個(gè)項(xiàng)目可能會(huì)對(duì)你有所啟發(fā)。
在這個(gè)教程中,作者將展示如何制作自己的基于Arduino的自動(dòng)喂魚(yú)器,讓小魚(yú)不在餓肚子。
發(fā)表于 03-28 11:25
教你一招,簡(jiǎn)化儀器Python編程控制!
許多行業(yè)的工程師都使用自動(dòng)化來(lái)擴(kuò)展其測(cè)試儀器的功能,而大多是選擇免費(fèi)的編程語(yǔ)言——Python來(lái)完成。作為適用于自動(dòng)化的主要編程語(yǔ)言,Python具備許多顯著優(yōu)勢(shì)
如何使用linux下gdb來(lái)調(diào)試python程序
如何使用linux下gdb來(lái)調(diào)試python程序? 在Linux下,可以使用GDB(GNU調(diào)試器)來(lái)調(diào)試Python程序。GDB是一
評(píng)論