python中的Ical-删除事件
我正在使用用于python的iCalendar包,您可以在这里看到: 我想删除一个事件。有人能想出一个办法吗python中的Ical-删除事件,python,icalendar,Python,Icalendar,我正在使用用于python的iCalendar包,您可以在这里看到: 我想删除一个事件。有人能想出一个办法吗 感谢codespeak软件包的文档中没有提到删除功能,因此,除非有一个未经文档化的功能在现有文件上运行,否则您需要读取日历文件,列举其组件: for k,v in cal.items(): 并将除要删除的组件以外的所有组件写入新文件 由于RFC5545是一个简单的规范,直接从cal字典中删除一条记录可能是安全的。但一般来说,组件之间可能存在依赖关系或副作用(如更新索引或校验和),因此
感谢codespeak软件包的文档中没有提到删除功能,因此,除非有一个未经文档化的功能在现有文件上运行,否则您需要读取日历文件,列举其组件:
for k,v in cal.items():
并将除要删除的组件以外的所有组件写入新文件
由于RFC5545是一个简单的规范,直接从cal字典中删除一条记录可能是安全的。但一般来说,组件之间可能存在依赖关系或副作用(如更新索引或校验和),因此直接操纵结构而不是调用方法可能会造成内部不一致。由于这是Python,您可以检查add()方法的副作用,并创建自己的delete()方法,该方法可以反转它所做的一切。如果需要,这是使用Python中的icalendar库()删除组件的函数:
def del_component_with_uid(cal,uid):
cal_str=cal.to_ical()
component_find=find_component_with_uid(cal,uid)
if component_find is not False:
firstfind = unicode(cal_str, encoding="latin1").find(unicode(component_find, encoding="latin1"))
export_cal(cal_str[:firstfind]+cal_str[firstfind+len(component_find):])
def find_component_with_uid(cal,uid):
propert = uid
for component in cal.subcomponents:
for prop in component.property_items():
if prop[0] == 'UID' and prop[1] == uid:
return component.to_ical()
return False
def export_cal(calendar_str):
f = open('./Calendars/example.ics', 'w')
f.write(calendar_str)
f.close()
cal.items是一个空列表。没有特别的帮助。