當(dāng)前位置:博客首頁>>Python >> 閱讀正文

python實(shí)現(xiàn)的騰訊微博管家-定時(shí)發(fā)布進(jìn)度

作者: 鄭曉 分類: Python 發(fā)布于: 2014-11-05 08:28 瀏覽:5,033 沒有評論


這兩天抽空完成了定時(shí)發(fā)布功能的設(shè)置部分,比如添加定時(shí),刪除定時(shí),顯示當(dāng)前已定時(shí)任務(wù)。

python實(shí)現(xiàn)的騰訊微博管家-定時(shí)發(fā)布進(jìn)度

定時(shí)功能由主菜單選擇進(jìn)入
增加一條定時(shí)任務(wù)命令格式:

add 日期時(shí)間 發(fā)布內(nèi)容



add 2014-11-05/08:00:00 這是一條微博!

顯示當(dāng)前任務(wù)列表命令為show,列出當(dāng)前任務(wù)的索引編號、定時(shí)時(shí)間、發(fā)布內(nèi)容。

刪除某條任務(wù),命令格式:

del 索引編號



del 1

基本實(shí)現(xiàn)代碼:

#定時(shí)發(fā)布任務(wù)設(shè)置
p = re.compile(r'\s+')
while True:
code = raw_input('設(shè)置或修改定時(shí)發(fā)布任務(wù):')
if code=='':
showMainMenu()
break
code = p.sub(' ', code)
args = code.split(' ')
operation = {
'add': lambda x,y:add_auto_post_task(x,y),
'del': lambda x,y:del_auto_post_task(x),
'show':lambda x,y:show_auto_post_task()
}
#輸入如show 或del刪除命令時(shí),由于args數(shù)組長度不夠,我也沒想出什么更好的方法,所以這里進(jìn)行了長度填充。
while len(args)<3: args.append(' ') print operation[args[0]](args[1],args[2])

這里使用了字典+匿名函數(shù)來模擬switch功能,而且由于我定義的匿名函數(shù)參數(shù)列表長度相等,所以在最后一行 可以統(tǒng)一調(diào)用。

三個(gè)匿名函數(shù)調(diào)用的方法代碼如下,其中autoPostTaskListT和C分別為儲存任務(wù)時(shí)間和任務(wù)發(fā)布內(nèi)容的兩個(gè)同長度列表,日期時(shí)間還應(yīng)該轉(zhuǎn)為時(shí)間戳,我這里暫時(shí)沒處理:

#添加定時(shí)任務(wù)
def add_auto_post_task(t,c):
try:
autoPostTaskListT.append(t)
autoPostTaskListC.append(c)
return True
except:
return False
#刪除定時(shí)任務(wù)
def del_auto_post_task(i):
try:
i = int(i)
del autoPostTaskListT[i]
del autoPostTaskListC[i]
return True
except:
return False
#列出當(dāng)前定時(shí)任務(wù)列表
def show_auto_post_task():
try:
for i in xrange(len(autoPostTaskListT)):
print i,"\t",autoPostTaskListT[i], "\t", autoPostTaskListC[i]
return True
except:
return False

剩下任務(wù):如何設(shè)置一個(gè)子線程去進(jìn)行定時(shí)掃描list來實(shí)現(xiàn)定時(shí)。

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/python-tencent-weibo-sdk-dingshifabu.html

發(fā)表評論

change vcode