如何检查列表中的更改

时间:2019-04-07 16:40:46

标签: python google-api-client python-datetime

我正在尝试使用适用于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:并输出具有相同值的alleventsoldevents以及我添加了 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

如果您认为需要更多代码,请告诉我,我将发布整个内容。

1 个答案:

答案 0 :(得分:0)

在您的代码“ first = False”中将first设置为零。因此它将在下一次迭代中进入if循环。删除“ first = False”并尝试