場景: 給一個csv表格,其中包括了需要發送的聯繫人,以及需要通知的事項,然後使用微信進行逐個批量發送
拆解問題:
如何讀取csv格式,把信息提取出來
使用csv模塊
新手可能不知道讀取之後會返回什麼類型的結果,所以可以一步一步輸出中間變量
import csv
f = open(path, 'r')
reader = csv.DictReader(f)
使用微信給好友批量發送信息
如何登錄微信
from wxpy import *
bot = Bot()
如何定位到某個好友
found = bot.friends().search('遊否', sex=MALE, city='深圳')
通過 .search() 獲得的搜索結果 均爲列表
如何給好友發送信息
found.send(msg)
如何製造短信模板?
方案:字符串後使用.format()
代碼
import csv
from wxpy import *
import time
path = "/Users/sk/Documents/test.csv"
name = []
times = []
course = []
address = []
# 讀csv格式的數據,並返回提取出的數據
def read_info():
f = open(path, 'r')
reader = csv.DictReader(f)
return [info for info in reader]
# 把數據處理成可以發送的短信
def make_mgs(row_msg):
total_msg = []
for info in row_msg:
name.append(info["Column 1"])
times.append(info["Column 2"])
course.append(info["Column 3"])
address.append(info["Column 4"])
# a = '{name}-同學請於{times}時間參加{course},地址是{address}.收到請回復,謝謝!'
# a.format(name="sk", times="re", course="fd", address="tes")
for i in range(1, len(name)):
t = "{name}-同學請於{times}時間參加{course},地址是{address}.收到請回復,謝謝!".format(
name=name[i],
times=times[i],
course=course[i],
address=address[i]
)
total_msg.append(t)
return total_msg
# 發送信息
def send(msg):
bot = Bot()
for m in msg:
friend_name = m.split("-")[0]
f = bot.friends().search(friend_name)
if len(f) == 1:
f[0].send(m)
else:
print(friend_name)
print("Please check this name")
time.sleep(3)
row_info = read_info()
msg = make_mgs(row_info)
send(msg)
筆記及心得
如果不確定,或者不太瞭解一個新事物的話,一定要先試試水,然後再逐步使用,熟悉它.
如果不太理解csv,就一步一步輸出,看其中一步一步的中間量是怎麼回事.
dictionary(dict) 字典
面向過程(把大問題分解成函數,逐個完成)
先寫框架,搞清楚參數的傳遞.是否需要返回參數,是否需要接受參數.
寫了幾個函數,並沒有調用,看到沒有出現期望的結果.還以爲程序出錯了,太傻.不調用函數,怎麼執行啊
Python筆記
列表解析式 [info for info in reader]
len(list) 返回list的元素個數
for 循環中 range靈活使用
多做事,少害怕
別總是覺得自己不行,怎麼就不行,哪方面不行?什麼東西是學不會的.從長期來看,沒有什麼東西是學不會的.
不成爲慫到害怕別人不慫的人
常見的問題:
1. 教程上一切正常可以運行,自己敲代碼的時候發現出了問題;
2. 自己測試一段簡單的代碼,明明是對的,但是”看似”一模一樣的遷移到工作程序之後,出現了錯誤.
記住: 變量即是原因
所以此時只需要觀察,兩者之間的變化有哪些,然後逐步向正確的代碼靠攏(即使是形式上,也需要),直至找到原因所在.
閱讀一個陌生的文檔,一定要嚴格按照上下順序,讀.不要嘗試跳讀.可以先瀏覽一下目錄.
對於一個陌生的API接口,可以先在terminal中試試水,不建議在編輯器中測試,因爲在terminal中可以輸入一段程序,然後輸出對應的結果;更方便和直觀
需要先測試需要用到的組件,測試完成之後,再進行組合,開始寫自己的東西.
要避免使用編程語言的關鍵字,eg.time, list等 雖然知道這一點,但是使用的時候需要多注意.
閱讀文檔時要知道自己需要什麼東西,否則毫無意義.
遇到知識盲點了,需要查詢文檔.
先想好自己需要哪些東西,列出來,然後再一一去查詢文檔.
不要反過來: 直接去看文檔,看到這個函數,覺得這個函數一會好像能用到,一會兒又看到一個函數,又感覺能用到;這樣做可能會找到很多對自己沒有的東西,而且會錯過自己真正需要的東西(掃過去的時候,可能沒看懂,覺得自己用不到)要特別注意文檔中的note(註解,注意事項等),以特殊顏色標記的提示信息.
getting started 新手入門
guide 指南
reference 參考資料
release note 發佈說明
sample code 示例代碼
technical note 技術說明
technical Q&A