6

有没有一种简单的方法可以从 Python 中的 ical 文件中获取一天的事件?

对于非经常性的一天事件,我使用了类似的东西

from icalendar import Calendar
for event in Calendar.from_ical(ical).walk('vevent'):
    if edate > ref_ref_day_start and event.get('dtstart').dt < ref_day_end:
        # code here

但重复事件只发生walk一次。

我可以看到有一个无限的事件迭代来无休止地重复事件可能是一个问题。但总有比自己计算重复次数更简单的方法吧?

(我找不到太多文档。我阅读了与重复事件相关的 icalendar 测试,但它似乎没有做这样的事情)。

4

3 回答 3

2

你可以使用 pyICSParser。

它将采用 ICS 文件并在日期时间对象列表中返回重复事件的日期。

您需要指定希望返回这些事件的时间窗口,否则如果没有UNTILorCOUNT参数的情况下重复发生的事件将呈现一个无限列表。

(免责声明我是包的作者)

于 2015-03-04T16:29:32.370 回答
1

是的。而不是 Ical 这样做由 gcalcli

gcalcli 是一个 Python 应用程序,它允许您从命令行访问您的 Google 日历

[1]:https ://github.com/insanum/gcalcli

于 2015-03-03T10:27:09.030 回答
1

除了icalendar. _ _

pip install recurring-ical-events

然后,您可以将代码更改为

from icalendar import Calendar
import recurring_ical_events
import datetime

today = datetime.date.today()

for event in recurring_ical_events.of(Calendar.from_ical(ical)).at(today):
    # code here for events of today

icalendar仅解析日历文件。该模块适用于事件重复。

于 2021-12-25T10:16:28.103 回答