[职问 python腾讯]python中腾讯微博管家-定时发布进度

更新时间:2019-08-06    来源:python    手机版     字体:

【www.bbyears.com--python】

这两天抽空完成了定时发布功能的设置部分,比如添加定时,删除定时,显示当前已定时任务。

定时功能由主菜单选择进入
增加一条定时任务命令格式:
add 日期时间 发布内容

add 2014-11-05/08:00:00 这是一条微博!
显示当前任务列表命令为show,列出当前任务的索引编号、定时时间、发布内容。
删除某条任务,命令格式:
del 索引编号

del 1
基本实现代码:

 代码如下 #定时发布任务设置
p = re.compile(r"\s+")
while True:
    code = raw_input("设置或修改定时发布任务:")
    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删除命令时,由于args数组长度不够,我也没想出什么更好的方法,所以这里进行了长度填充。
    while len(args)<3:
        args.append(" ")
    print operation[args[0]](args[1],args[2])

这里使用了字典+匿名函数来模拟switch功能,而且由于我定义的匿名函数参数列表长度相等,所以在最后一行 可以统一调用。
三个匿名函数调用的方法代码如下,其中autoPostTaskListT和C分别为储存任务时间和任务发布内容的两个同长度列表,日期时间还应该转为时间戳,我这里暂时没处理:

 代码如下 #添加定时任务
def add_auto_post_task(t,c):
    try:
        autoPostTaskListT.append(t)
        autoPostTaskListC.append(c)
        return True
    except:
        return False
#删除定时任务
def del_auto_post_task(i):
    try:
        i = int(i)
        del autoPostTaskListT[i]
        del autoPostTaskListC[i]
        return True
    except:
        return False
#列出当前定时任务列表
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

剩下任务:如何设置一个子线程去进行定时扫描list来实现定时。

 

本文来源:http://www.bbyears.com/jiaocheng/60437.html