这两天抽空完成了定时发布功能的设置部分,比如添加定时,删除定时,显示当前已定时任务。
定时功能由主菜单选择进入
增加一条定时任务命令格式:
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来实现定时。
时间: 2024-10-01 05:11:40