#python #file #icalendar #readfile
Вопрос:
Я хочу, чтобы у меня была возможность получить все события на сегодня, прочитав загруженный файл .ics
Комментарии:
2. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Есть несколько анализаторов ics, таких как ics-py. Вы пробовали что-нибудь из этого? Что именно вы пытаетесь сделать? (в каком формате вы хотите, чтобы ваши выходные данные были в? что вы собираетесь делать с «событием» в своем коде?
Если бы вы могли показать, что вы пробовали (и что вы хотите, чтобы это делалось, было бы проще что-то предложить).
обновлено после комментария: в соответствии с документами, которые вы только что сделали:
from ics import Calendar
c = Calendar(your_ics_string)
print(c.events)
event = list(c.events)[0] # c.events is a set
print(type(event))
print(dir(event))
for event in c.events:
...
Обратите внимание , что я с этим не знаком ics-py
, но документы выглядят очень хорошо.
Конечно, вам нужно сначала установить его ( pip install ics
), если вы еще этого не сделали.
Комментарии:
1. На данный момент я пытаюсь распечатать все события дня. Я искал ics.py но не нашли никаких способов сделать это.
Ответ №2:
что-то вроде этого (чтобы получить сегодняшнее событие, вам нужно сравнить дату начала события с сегодняшним днем)
ics_data = '''BEGIN:VCALENDAR
BEGIN:VEVENT
CREATED:20151219T021727Z
DTEND;TZID=America/Toronto:20170515T110000
DTSTAMP:20151219T022011Z
DTSTART;TZID=America/Toronto:20170515T100000
LAST-MODIFIED:20151219T021727Z
RRULE:FREQ=DAILY;UNTIL=20170519T035959Z
SEQUENCE:0
SUMMARY:Meeting
TRANSP:OPAQUE
UID:21B97459-D97B-4B23-AF2A-E2759745C299
END:VEVENT
BEGIN:VEVENT
CREATED:20151219T022011Z
DTEND;TZID=America/Toronto:20170518T120000
DTSTAMP:20151219T022011Z
DTSTART;TZID=America/Toronto:20170518T110000
LAST-MODIFIED:20151219T022011Z
RECURRENCE-ID;TZID=America/Toronto:20170518T100000
SEQUENCE:0
SUMMARY:Final Meeting
TRANSP:OPAQUE
UID:21B97459-D97B-4B23-AF2A-E2759745C299
END:VEVENT
END:VCALENDAR'''
events = []
in_event = False
lines = ics_data.split('n')
for line in lines:
if line == 'BEGIN:VEVENT':
event = {}
in_event = True
continue
if line == 'END:VEVENT':
events.append(event)
in_event = False
continue
if in_event:
key,val = line.split(':')
event[key]= val
for event in events:
print(event)
выход
{'CREATED': '20151219T021727Z', 'DTEND;TZID=America/Toronto': '20170515T110000', 'DTSTAMP': '20151219T022011Z', 'DTSTART;TZID=America/Toronto': '20170515T100000', 'LAST-MODIFIED': '20151219T021727Z', 'RRULE': 'FREQ=DAILY;UNTIL=20170519T035959Z', 'SEQUENCE': '0', 'SUMMARY': 'Meeting', 'TRANSP': 'OPAQUE', 'UID': '21B97459-D97B-4B23-AF2A-E2759745C299'}
{'CREATED': '20151219T022011Z', 'DTEND;TZID=America/Toronto': '20170518T120000', 'DTSTAMP': '20151219T022011Z', 'DTSTART;TZID=America/Toronto': '20170518T110000', 'LAST-MODIFIED': '20151219T022011Z', 'RECURRENCE-ID;TZID=America/Toronto': '20170518T100000', 'SEQUENCE': '0', 'SUMMARY': 'Final Meeting', 'TRANSP': 'OPAQUE', 'UID': '21B97459-D97B-4B23-AF2A-E2759745C299'}