0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用Python制作一個(gè)自動(dòng)發(fā)送程序

馬哥Linux運(yùn)維 ? 來(lái)源:CSDN博客 ? 作者:Cresyeal ? 2021-11-22 09:28 ? 次閱讀
事情是這樣的:昨天晚上,女朋友讓我十二點(diǎn)催她睡覺(jué)。 不過(guò),可是我實(shí)在太困了,熬不下去…… 是吧?女朋友哪有睡覺(jué)重要?
但,女朋友的命令,我是不敢違抗的……
但是睡覺(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è)模塊:apschedulerpyautogui快捷鍵 Windows+r 打開(kāi)運(yùn)行控制框,輸入 cmd,進(jìn)入命令行,輸入:

		pip install apschedulerpipinstallpyautogui導(dǎo)入:

		import pyautoguifrom datetime import datetimefrom apscheduler.schedulers.blocking import BlockingScheduler # 阻塞當(dāng)前進(jìn)程的調(diào)度器# blocking類(lèi)型調(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)和鍵盤(pán)。我們將用它來(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'])
在方法中傳入一個(gè)列表,里面每一元素都是單個(gè)字母或特殊按鍵
  • pyautogui.typewrite('You can type multiple letters in this way')
傳入字符串,但不能同時(shí)打印字母和特殊按鍵。這兩種方式都不能直接輸入中文,所以只能依靠你的輸入法來(lái)輸入中文了。

		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í)行??梢噪S時(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ā)器的類(lèi)型。這里選用的是 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 pyautoguiimport pyperclipfrom datetime import datetimefrom 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
責(zé)任編輯:haq
聲明:本文內(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

    文章

    4671

    瀏覽量

    67770
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84081

原文標(biāo)題:女朋友讓我深夜十二點(diǎn)催她睡覺(jué),我用Python輕松搞定

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何用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

    如何使用Python編寫(xiě)腳本來(lái)自動(dòng)發(fā)送郵件

    Python種非常流行的編程語(yǔ)言,可以用于多種用途,包括自動(dòng)化任務(wù)。其中個(gè)常見(jiàn)的自動(dòng)化任務(wù)
    的頭像 發(fā)表于 12-07 11:36 ?1055次閱讀

    Python程序自動(dòng)關(guān)閉的方法

    有時(shí)候,我們希望Python程序在完成了任務(wù)后不立即自動(dòng)關(guān)閉,而是保持運(yùn)行狀態(tài),以便進(jìn)行進(jìn)步的操作或觀察程序的輸出。在本文中,我們將探討幾
    的頭像 發(fā)表于 11-29 15:10 ?4317次閱讀

    運(yùn)行Python程序的幾種常見(jiàn)方法

    Python種高級(jí)編程語(yǔ)言,具有簡(jiǎn)單易學(xué),易于閱讀和調(diào)試的特點(diǎn)。當(dāng)你完成了個(gè)Python程序
    的頭像 發(fā)表于 11-28 15:32 ?1933次閱讀

    如何運(yùn)行Python程序

    運(yùn)行Python程序非常簡(jiǎn)單。Python種解釋型語(yǔ)言,這意味著可以直接通過(guò)解釋器來(lái)執(zhí)行代碼。下面我將詳細(xì)介紹如何運(yùn)行Python
    的頭像 發(fā)表于 11-24 09:31 ?1005次閱讀

    python怎么運(yùn)行程序

    Python種廣泛使用的編程語(yǔ)言,它的簡(jiǎn)易和可讀性使得它成為初學(xué)者和專(zhuān)業(yè)開(kāi)發(fā)人員的首選。在運(yùn)行Python程序之前,您需要安裝Python
    的頭像 發(fā)表于 11-24 09:25 ?2350次閱讀

    python運(yùn)行自動(dòng)再次運(yùn)行

    自動(dòng)化是現(xiàn)代計(jì)算機(jī)科學(xué)和軟件開(kāi)發(fā)的個(gè)重要領(lǐng)域。在Python中,有許多方法可以實(shí)現(xiàn)自動(dòng)運(yùn)行程序
    的頭像 發(fā)表于 11-23 15:52 ?1328次閱讀

    python寫(xiě)完程序之后怎么運(yùn)行

    對(duì)Python程序的執(zhí)行流程有更深入的了解。 Python程序的基本結(jié)構(gòu) Python
    的頭像 發(fā)表于 11-22 11:10 ?842次閱讀

    何用8個(gè)零件制作個(gè)無(wú)線電設(shè)備

    、零件型號(hào)選擇等要素齊全,不虧為篇業(yè)余無(wú)線電愛(ài)好者制作學(xué)習(xí)的好教程,今天和電臺(tái)小叔BG5WKP起來(lái)看看作者如何用8個(gè)零件
    的頭像 發(fā)表于 11-20 14:40 ?1900次閱讀
    如<b class='flag-5'>何用</b>8<b class='flag-5'>個(gè)</b>零件<b class='flag-5'>制作</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>無(wú)線電設(shè)備

    利用Python發(fā)送郵件的 3 種方式

    Python 發(fā)送郵件的 3 種方式 2. 準(zhǔn)備 以 126 郵箱為例,在編碼之前,我們需要開(kāi)啟 SMTP 服務(wù) 然后,手動(dòng)新增個(gè)授權(quán)碼 其中,賬號(hào)、授權(quán)碼和服務(wù)器地址用于連接登錄
    的頭像 發(fā)表于 11-02 11:37 ?829次閱讀

    何用Python批量定制化發(fā)送郵件

    封精美的元旦祝福郵件,但是郵件的內(nèi)容——比如姓名、祝福語(yǔ)等應(yīng)該怎樣動(dòng)態(tài)渲染呢?答案是jinja2. jinja2 是個(gè)Python 的模板引擎,使用jinja2,我們能夠在郵件HT
    的頭像 發(fā)表于 11-01 11:32 ?1973次閱讀

    怎么用Python構(gòu)建個(gè)自動(dòng)發(fā)送郵件的腳本

    呢? 類(lèi)似的應(yīng)用場(chǎng)景還有很多,不僅僅是在股票策略提醒上,比如定時(shí)向某些人發(fā)送郵件;網(wǎng)站宕機(jī)了,實(shí)時(shí)發(fā)送郵件提醒;網(wǎng)站負(fù)載過(guò)高,發(fā)送郵件提醒......等等。 下面就來(lái)講講怎么用Python
    的頭像 發(fā)表于 10-31 16:36 ?467次閱讀
    怎么用<b class='flag-5'>Python</b>構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>自動(dòng)</b><b class='flag-5'>發(fā)送</b>郵件的腳本

    何用Python自動(dòng)套用模板批量生成PDF文檔

    日常辦公中,經(jīng)常會(huì)使用PDF文檔,難免需要對(duì)PDF文檔進(jìn)行編輯,有時(shí)候PDF文檔中的大部分內(nèi)容都是樣的,只是發(fā)送對(duì)象不同。 這種模板套用的場(chǎng)景下,使用Python進(jìn)行自動(dòng)化就尤為方便
    的頭像 發(fā)表于 10-31 10:56 ?1246次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>Python</b><b class='flag-5'>自動(dòng)</b>套用模板批量生成PDF文檔

    怎么用Python構(gòu)建個(gè)自動(dòng)發(fā)送郵件的腳本

    ? 類(lèi)似的應(yīng)用場(chǎng)景還有很多,不僅僅是在股票策略提醒上,比如定時(shí)向某些人發(fā)送郵件;網(wǎng)站宕機(jī)了,實(shí)時(shí)發(fā)送郵件提醒;網(wǎng)站負(fù)載過(guò)高,發(fā)送郵件提醒......等等。 下面就來(lái)講講怎么用Python
    的頭像 發(fā)表于 10-21 14:47 ?652次閱讀
    怎么用<b class='flag-5'>Python</b>構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>自動(dòng)</b><b class='flag-5'>發(fā)送</b>郵件的腳本

    何用Python自動(dòng)套用模板批量生成PDF文檔

    今天就給大家講講如何用Python自動(dòng)套用模板批量生成的PDF文檔。 1.準(zhǔn)備 開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上噢,如果沒(méi)有,請(qǐng)?jiān)L問(wèn)這篇文章: 超詳細(xì)
    的頭像 發(fā)表于 10-17 10:54 ?793次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>Python</b><b class='flag-5'>自動(dòng)</b>套用模板批量生成PDF文檔