iCalendar解析器/生成器
项目描述
icalendar包是一个符合RFC 5545的iCalendar文件解析器/生成器。
- 主页::
- 代码::
- 邮件列表::
- 依赖::
- 许可::
快速入门指南
icalendar允许您使用Python 创建、检查和修改日程信息。
要安装该软件包,运行
pip install icalendar
检查文件
您可以打开一个.ics文件并查看所有事件
>>> import icalendar >>> from pathlib import Path >>> ics_path = Path("src/icalendar/tests/calendars/example.ics") >>> with ics_path.open() as f: ... calendar = icalendar.Calendar.from_ical(f.read()) >>> for event in calendar.walk('VEVENT'): ... print(event.get("SUMMARY")) New Year's Day Orthodox Christmas International Women's Day
修改内容
此类日历可以编辑并再次保存。
>>> calendar["X-WR-CALNAME"] = "My Modified Calendar" # modify
>>> print(calendar.to_ical()[:129]) # save modification
BEGIN:VCALENDAR
VERSION:2.0
PRODID:collective/icalendar
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:My Modified Calendar
创建事件、待办事项、日志、闹钟等
icalendar 支持创建和解析 iCalendar(RFC 5545)标准中所有类型的对象。
>>> icalendar.Event() # events
VEVENT({})
>>> icalendar.FreeBusy() # free/busy times
VFREEBUSY({})
>>> icalendar.Todo() # Todo list entries
VTODO({})
>>> icalendar.Alarm() # Alarms e.g. for events
VALARM({})
>>> icalendar.Journal() # Journal entries
VJOURNAL({})
请查看更多示例:更多示例。
使用您选择的时区
使用 icalendar,您可以本地化事件以在不同的时区举行。 zoneinfo、dateutil.tz 和 pytz 与 icalendar 兼容。以下示例创建了一个使用所有时区实现的事件,结果相同
>>> import pytz, zoneinfo, dateutil.tz # timezone libraries
>>> import datetime, icalendar
>>> e = icalendar.Event()
>>> tz = dateutil.tz.tzstr("Europe/London")
>>> e["X-DT-DATEUTIL"] = icalendar.vDatetime(datetime.datetime(2024, 6, 19, 10, 1, tzinfo=tz))
>>> tz = pytz.timezone("Europe/London")
>>> e["X-DT-USE-PYTZ"] = icalendar.vDatetime(datetime.datetime(2024, 6, 19, 10, 1, tzinfo=tz))
>>> tz = zoneinfo.ZoneInfo("Europe/London")
>>> e["X-DT-ZONEINFO"] = icalendar.vDatetime(datetime.datetime(2024, 6, 19, 10, 1, tzinfo=tz))
>>> print(e.to_ical()) # the libraries yield the same result
BEGIN:VEVENT
X-DT-DATEUTIL;TZID=Europe/London:20240619T100100
X-DT-USE-PYTZ;TZID=Europe/London:20240619T100100
X-DT-ZONEINFO;TZID=Europe/London:20240619T100100
END:VEVENT
带 zoneinfo 的版本 6
icalendar 版本 6 将时区实现切换到 zoneinfo。这仅影响您使用 from_ical() 解析 icalendar 对象的情况。功能已扩展,并从 6.0.0 版本开始测试了 pytz 和 zoneinfo 两种时区实现。
默认情况下,从 6.0.0 版本开始,将创建 zoneinfo 时区。
>>> dt = icalendar.Calendar.example("timezoned").walk("VEVENT")[0]["DTSTART"].dt
>>> dt.tzinfo
ZoneInfo(key='Europe/Vienna')
如果您希望在解析结果中继续接收 pytz 时区,您可以接收所有最新更新,并切换回早期行为
>>> icalendar.use_pytz()
>>> dt = icalendar.Calendar.example("timezoned").walk("VEVENT")[0]["DTSTART"].dt
>>> dt.tzinfo
<DstTzInfo 'Europe/Vienna' CET+1:00:00 STD>
版本 6 在 main 分支 上。它与 Python 版本 3.8 - 3.12 和 PyPy3 兼容。我们预计带有版本 6+ 的 main 分支将接收最新更新和功能。
进一步阅读
您可以在此项目中了解更多关于此项目的信息
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
icalendar-6.0.0.tar.gz (81.9 kB 查看哈希值)
构建分布
icalendar-6.0.0-py3-none-any.whl (126.0 kB 查看哈希值)