我正在尝试使用针对python的Google Calendar API,我想每隔五秒检查一次新的日历添加事件。我知道将它设置为一个旧列表,然后在它更新时再次比较它:
-main()
是从Calendar检索数据的函数。
- 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
如果您认为有必要使用更多代码,请告诉我,我将发布整个代码。
在你的代码中“first = False”首先设置为零。所以它在下一次迭代中进入if循环。移除“first = False”并尝试