2017-06-01 60 views
-4

我需要在选定日期自动安排功能。所以我使用这个函数的时间表,但我不能动态地将参数传递给时间表对象。如果有人知道如何实现这一点,请为我提供解决方案。下面是我的代码:如何动态地将参数传递给对象?

import schedule 
def job(ip_id): 
    print "Schedule started" + ip_id 

ip_id = 1 
sname = "weekly" 
sched = schedule.every().monday.do(job, ip_id).tag(sname) 

它的工作原理,并计划在周一但是当我通过从列表中选择值,错误出现。

import schedule 
def job(ip_id): 
    print "Schedule started" + ip_id 
ip_id = 1 
sname = "weekly" 
cron = [monday, wednesday, sunday] 
for i in cron: 
    sched = schedule.every().i.do(job, ip_id).tag(sname) 

如何将值传递到那个地方是我的问题?

+0

“有什么问题?整个问题只是没有意义。 “cron”列表中的“星期一”,“星期三”和“星期日”是什么?你的'jschedule.every()'是什么?你想使用'monday','wednesday'和'sunday'后面的值来访问'every()',或者你更喜欢变量名吗?这似乎没有什么正确的,我们的方式太少了。 –

+0

'job()'可以没有参数。当它调用它可以从另一个地方(存储'ip_id')获得参数。或者你可以关闭:'lambda:joib(ip_id)'作为'do(..)'的参数' –

+0

@ Paul-AG他的问题是关于如何让'.every().i'来处理变量' i'。 – Barmar

回答

1

这里没有魔法。 “星期一”只是缺失属性的名称:)

import schedule 

def job(*a, **k): 
    pass 

ip_id = 0 
sname = "sname" 

cron = ['monday', 'wednesday', 'sunday'] 
for i in cron: 
    sched = getattr(schedule.every(), i).do(job, ip_id).tag(sname) 
相关问题