中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-29 18:18:12 來源:腳本之家 閱讀:152 作者:程序員聚集地 欄目:開發技術

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

初步設想

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

【更新2.0】Python自動監測自如房源狀態,推送微信消息提醒狀態變更

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

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

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

•一個可以編寫和運行Python代碼的編輯器;
•一部裝有微信的手機,最好有兩個微信號;
•一個用來記錄事項的Excel文檔。

用圖表示如下:

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

用Python設計一個可以自動推送微信消息提醒的備忘錄! 

運行前準備

Excel文檔設計

為了記錄事項,需要有一個用來保存事項記錄的Excel文檔。需要對文檔記錄逐條讀取,獲取事項內容、辦結時間、辦結標志等,因此需要對文檔格式進行規范。現在簡單的進行了設計,模式如下:

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

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

對于需要提醒事項,需要按照如下格式記錄:

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

運行結果

直接運行程序,Excel文檔內容變化如下:

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

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

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

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

幾點說明

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

代碼

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

---恢復內容結束---

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建始县| 安陆市| 白河县| 衡阳县| 浠水县| 七台河市| 益阳市| 余江县| 张家港市| 正蓝旗| 岳阳县| 德昌县| 土默特左旗| 普格县| 神木县| 桃园市| 伊金霍洛旗| 温州市| 丰县| 砀山县| 江山市| 抚州市| 射洪县| 铜梁县| 营山县| 渭南市| 英吉沙县| 古浪县| 祁东县| 湖南省| 宁阳县| 武安市| 吴忠市| 洞口县| 邢台市| 北流市| 津市市| 苏尼特左旗| 永德县| 舟山市| 忻城县|