2017-06-01 104 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) 
相關問題