我正在尝试使用适用于python的google Calendar API,我想每五秒钟检查一次日历中是否有新事件。我知道将其设置为旧列表,然后在更新时再次进行比较:
-main()
是从日历中检索数据的功能。
-Allevents
是日历中的事件列表。它在main()
内附加了事件
-其他名称非常直观。
while 1 == 1:
time.sleep(5)
main()
if first == 0:
m = set(allevents) - set(oldevents)
print(oldevents)
if not m:
print('nothing changed')
else:
print(m)
print("--------------------------------------------------------")
else:
oldevents = allevents
first = False
oldevents = allevents
allevents.clear()
当我运行此命令时,它第一次检索数据就很完美:输出allevents
(用main()
编写),没有其他内容。第二次是我还没有进行任何更改时,因此它输出allevents
和 oldevents
(具有相同的值)以及nothing changed
信息。
while循环第三次运行是在向日历添加事件时。从理论上讲,我希望它输出由于
而更改的事件m = set(allevents) - set(oldevents)
print(oldevents)
if not m:
print('nothing changed')
else:
print(m)
print("--------------------------------------------------------")
但是,它跟随if not m:
并输出具有相同值的allevents
和oldevents
以及我添加了和 nothing changed
的新事件消息。
旁注:当我在下一个循环中删除该事件时,两个列表也都删除了该事件。
四个循环(出于演示目的进行了一些修改):
Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
['5kt8vb1m5tad2h6higtd8seqp9']
nothing changed
Getting the upcoming 10 events
['7p4hs2ribddnl5h13erv5c1rir', '5kt8vb1m5tad2h6higtd8seqp9']
['7p4hs2ribddnl5h13erv5c1rir', '5kt8vb1m5tad2h6higtd8seqp9']
nothing changed
Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
['5kt8vb1m5tad2h6higtd8seqp9']
nothing changed
如果您认为需要更多代码,请告诉我,我将发布整个内容。
答案 0 :(得分:0)
在您的代码“ first = False”中将first设置为零。因此它将在下一次迭代中进入if循环。删除“ first = False”并尝试