国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Python制作自動推送微信消息提醒的備忘錄功能

2020-01-04 14:34:34
字體:
供稿:網(wǎng)友

日常工作生活中,事情一多,就會忘記一些該做未做的事情。即使有時候把事情記錄在了小本本上或者手機(jī)、電腦端備忘錄上,也總會有查看不及時,導(dǎo)致錯過的尷尬。如果有一款小工具,可以及時提醒,而不用再主動去查備忘錄,化被動為主動,那就再合適不過了。因此,在這里我們就利用Python,實(shí)現(xiàn)這樣的一款“小工具”。

初步設(shè)想

毫無疑問,手機(jī)是當(dāng)前使用最頻繁的工具,沒有之一。飯可以不吃,手機(jī)不可以不帶。如果能在某些特定的時點(diǎn),將備忘記錄事項(xiàng)通過某種形式發(fā)送到手機(jī)端,通過查看手機(jī)端消息實(shí)現(xiàn)事項(xiàng)提醒,那將是再好不過了。而手機(jī)端最常用的實(shí)時通訊工具,非微信莫屬。關(guān)于向手機(jī)端推送微信消息的功能,在之前的小項(xiàng)目中已經(jīng)使用過,這里可以直接套用。

【更新2.0】Python自動監(jiān)測自如房源狀態(tài),推送微信消息提醒狀態(tài)變更

于是,我們有了以下思路:

•首先,要有一個可以記錄事項(xiàng)的文檔,用來記錄備忘事項(xiàng)的內(nèi)容、提醒時間、是否辦結(jié)等;
•其次,掃描這個文檔,獲取事項(xiàng)內(nèi)容,判斷事項(xiàng)是否辦結(jié),如已辦結(jié)需允許對文檔的修改,標(biāo)記辦結(jié)標(biāo)志;
•然后,設(shè)置一套提醒邏輯,規(guī)定在什么時間、什么情況下提醒;
•隨后,特殊情景處理,要能夠在不干擾程序正常運(yùn)行的條件下,添加新的備忘事項(xiàng),并且新添加事項(xiàng)能夠被掃描到;
•最后,在規(guī)定的時間和情境下,推送微信消息。

根據(jù)以上分析,需要的工具,包含三部分:

•一個可以編寫和運(yùn)行Python代碼的編輯器;
•一部裝有微信的手機(jī),最好有兩個微信號;
•一個用來記錄事項(xiàng)的Excel文檔。

用圖表示如下:

Python,自動推送,微信消息,備忘錄

用Python設(shè)計(jì)一個可以自動推送微信消息提醒的備忘錄! 

運(yùn)行前準(zhǔn)備

Excel文檔設(shè)計(jì)

為了記錄事項(xiàng),需要有一個用來保存事項(xiàng)記錄的Excel文檔。需要對文檔記錄逐條讀取,獲取事項(xiàng)內(nèi)容、辦結(jié)時間、辦結(jié)標(biāo)志等,因此需要對文檔格式進(jìn)行規(guī)范。現(xiàn)在簡單的進(jìn)行了設(shè)計(jì),模式如下:

Python,自動推送,微信消息,備忘錄

這是一個非常簡單的模式了,第二列內(nèi)容是具體提醒事項(xiàng)的詳細(xì)內(nèi)容;第三列日期列要按照“2018/09/02 18:00”的格式書寫,需要獲取該列的日期、時間;第四列是事項(xiàng)辦結(jié)標(biāo)志,已辦結(jié)事項(xiàng)標(biāo)注為“是”。

對于需要提醒事項(xiàng),需要按照如下格式記錄:

Python,自動推送,微信消息,備忘錄

運(yùn)行結(jié)果

直接運(yùn)行程序,Excel文檔內(nèi)容變化如下:

Python,自動推送,微信消息,備忘錄  

我們看到,日期在當(dāng)前時間(運(yùn)行代碼的時間)之前的事項(xiàng),即已辦結(jié)事項(xiàng),內(nèi)容會添加背景色,“是否完成”標(biāo)注為“是”。另外,程序會整合未辦結(jié)事項(xiàng)內(nèi)容,推送微信通知,如下:

Python,自動推送,微信消息,備忘錄

小編在此謝謝大家的觀看!Python很容易學(xué)!所以小編有弄一個交流,互問互答,資源共享的交流學(xué)習(xí)基地,如果你也是Python的學(xué)習(xí)者或者大牛都?xì)g迎你來!?:548+377+875!一起 學(xué)習(xí)共同進(jìn)步!

幾點(diǎn)說明

首先,因?yàn)閷?shí)現(xiàn)非常的簡單,過程粗暴、不細(xì)膩,一看代碼就懂(后附全部代碼),故不多介紹實(shí)現(xiàn)過程和邏輯,以免貽笑大方;其次,有幾點(diǎn)說明一下,如果各位有好的想法,請留言告知,便于我優(yōu)化完善;最后,想法大于實(shí)用,突發(fā)奇想,周末又有點(diǎn)時間而已。
•關(guān)于微信推送消息:用Python的itchat模塊實(shí)現(xiàn),僅僅是登錄、指定好友發(fā)送消息、退出等這樣簡單的操作,感興趣的可以直接去搜索該模塊,有很多參考資料;
•xlrd、xlwt和xlutils:xlrd打開Excel是只讀的,不能修改;xlwt是可以對Excel文檔修改,但是一般是新建一個文檔,然后在此基礎(chǔ)上修改,對于已有內(nèi)容的文檔,就不適用了,因此借用了xlutils,而xlutils在xlrd和xlwt之間建立了一個橋梁,實(shí)現(xiàn)了讀和寫;
•在添加新的事項(xiàng)時,需要打開Excel文檔,如果沒有特殊處理,又恰好遇到程序?qū)ξ臋n的保存時會報(bào)錯,因此使用了try…except結(jié)構(gòu),遇到文檔占用,會跳過該次掃描,休息指定時間后重新開始;
•對于未辦結(jié)事項(xiàng),什么時間推送消息、一天推送幾次,都可以根據(jù)自身需要調(diào)節(jié);
•對于已辦結(jié)事項(xiàng),沒有進(jìn)行刪除,而是僅僅改變了格式繼續(xù)保留下來,程序運(yùn)行時,還需要對這些事項(xiàng)進(jìn)行掃描,自然會造成資源浪費(fèi),不刪除是因?yàn)橄胗涗涀鲞^的事項(xiàng),便于日后查看,另外,對我個人而言,短時間內(nèi)也不會積累大量的事項(xiàng),不會造成太大的影響,當(dāng)然可以添加一些機(jī)制進(jìn)行處理,比如移動到另外一個工作表中。

代碼

# 導(dǎo)入模塊import xlrdfrom xlutils.copy import copyimport xlwtimport itchatimport datetimeimport time# 使用手機(jī)掃描二維碼登錄微信def WeChatLogin(): itchat.login()# 給指定好友發(fā)送指定內(nèi)容的消息def SendAMassage(friend, message): users = itchat.search_friends(name=friend) userName = users[0]['UserName'] itchat.send(message, toUserName = userName)# 按照指定格式修改excel表格內(nèi)容def ModifyContent(row,col,content,sheet,new_remindbook,path,style): # 獲取工作表內(nèi)容 new_sheet = new_remindbook.get_sheet(0) # 寫入數(shù)據(jù) new_sheet.write(row,col,content,style) # 保存文件 new_remindbook.save(path)# 判斷提醒是否過期def Overdue(nowtime,deadtime): if deadtime<nowtime: return True else: return False# 程序運(yùn)行主體if __name__=='__main__': # 首次執(zhí)行標(biāo)志 first_exec = True # 微信登錄 WeChatLogin() # 指定微信消息推送好友 friend = '君以沫' # 備忘本記錄文件地址 path = r'.記事本.et' # 掃描備忘本記錄 while True: # 文件占用標(biāo)志 occupy = False # 打開excel文件,獲取文件屬性信息 remindbook = xlrd.open_workbook(path,formatting_info=True) sheet = remindbook.sheet_by_index(0) nrows=sheet.nrows # 建立副本 new_remindbook=copy(remindbook) # 初始化事項(xiàng)序號 mark = 1 # 初始化message信息 message='以下事項(xiàng)未辦結(jié):' # 執(zhí)行一次備忘本掃描 for i in range(2, nrows): # 如果已辦結(jié)事項(xiàng)或者空事項(xiàng),直接跳過 if sheet.cell(i,3).value=='是' or sheet.cell(i,2).value=='': continue # 獲取事項(xiàng)截止時間 deadtime = xlrd.xldate.xldate_as_datetime(sheet.cell(i,2).value, 0) deadhour = deadtime.strftime('%H:%M') # 獲取當(dāng)前時間 nowtime = datetime.datetime.now() nowhour=nowtime.strftime("%H:%M") # 如果過期,則將過期標(biāo)志設(shè)置為是 if Overdue(nowtime,deadtime): # style0 style0 = xlwt.XFStyle() # 設(shè)置單元格背景顏色 pattern= xlwt.Pattern() pattern.pattern=1 pattern.pattern_fore_colour=22 style0.pattern=pattern # 字體設(shè)置 font = xlwt.Font() font.name = '仿宋_GB2312' font.colour_index = 1 font.height =280 style0.font = font # 邊框設(shè)置 borders = xlwt.Borders() borders.left = xlwt.Borders.THIN borders.left = xlwt.Borders.THIN borders.right = xlwt.Borders.THIN borders.top = xlwt.Borders.THIN borders.bottom = xlwt.Borders.THIN style0.borders = borders # 為過期事項(xiàng)添加背景色(按指定格式重填) try: ModifyContent(i,1,sheet.cell(i,1).value,sheet,new_remindbook,path,style0) except: occupy = True print('文件占用中,休息60s...') time.sleep(6) break # style style = xlwt.XFStyle() # 設(shè)置單元格字體、顏色、字號 font = xlwt.Font() font.name = '仿宋_GB2312' font.colour_index = 0 font.height =280 font.bold = False  style.font = font # 設(shè)置單元格對齊方式 alig = xlwt.Alignment() alig.horz = xlwt.Alignment.HORZ_CENTER alig.vert = xlwt.Alignment.VERT_CENTER style.alignment = alig # 邊框設(shè)置 borders = xlwt.Borders() borders.left = xlwt.Borders.THIN borders.left = xlwt.Borders.THIN borders.right = xlwt.Borders.THIN borders.top = xlwt.Borders.THIN borders.bottom = xlwt.Borders.THIN style.borders = borders # 按照指定格式寫入數(shù)據(jù) try: ModifyContent(i,3,'是',sheet,new_remindbook,path,style) except: occupy = True print('文件占用中,休息60s...') time.sleep(6) break # 未過期事項(xiàng),添加到提醒信息中 else: # 截止時間單獨(dú)事項(xiàng)提醒 if deadhour == nowhour: SendAMassage(friend, sheet.cell(i,1).value) message = message+''+'['+str(mark)+']'+sheet.cell(i,1).value mark=mark+1 # 如果沒有被占用 if not(occupy): # 沒有未辦結(jié)事項(xiàng),結(jié)束循環(huán) if len(message)<=8: print('here') break # 首次運(yùn)行消息提醒 if first_exec: SendAMassage(friend, message) print(message) first_exec = False release = False # 如果是以下時點(diǎn),則推送微信消息提醒 if nowhour in ['08:00','10:00','12:00','14:00','16:00']: SendAMassage(friend, message) # 其他時點(diǎn) else: print('當(dāng)前時間:'+ nowtime.strftime("%Y%m%d %H:%M:%S")+' '+'休息30秒...' ) # 半點(diǎn)整點(diǎn)打印未辦結(jié)事項(xiàng) if nowhour[3:] in ['30','00']: print(message) time.sleep(30) # 所有事項(xiàng)已辦結(jié) message='所有事項(xiàng)已辦結(jié)。' SendAMassage(friend, message) print(message) # 退出微信登錄 itchat.logout()

---恢復(fù)內(nèi)容結(jié)束---

總結(jié)

以上所述是小編給大家介紹的使用Python制作自動推送微信消息提醒的備忘錄,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 浑源县| 英超| 彰化县| 潜江市| 武定县| 色达县| 南郑县| 定结县| 察哈| 尉犁县| 伽师县| 友谊县| 应城市| 平顶山市| 通渭县| 自贡市| 南丹县| 嘉黎县| 房产| 资中县| 虎林市| 顺平县| 屯昌县| 锡林郭勒盟| 罗江县| 大同市| 仁布县| 大渡口区| 光泽县| 西和县| 海门市| 新野县| 津南区| 深水埗区| 日照市| 古丈县| 栾川县| 东乡| 德清县| 托克逊县| 巴塘县|