Python 将结果保存在一个集合中,并在一天结束时显示
我有一个函数,它获取一个集合,从一小时开始,显示集合中存在的对象的数量。我想要的是这个集合保存当天发生的所有事件,并在晚上11:59写入文件,在下午12:00清理集合,第二天再次执行相同操作。目前,我的设置是在晚上11:59,它将检查有多少对象,并显示其数量,但它与发生的不匹配,例如在上午Python 将结果保存在一个集合中,并在一天结束时显示,python,python-3.x,Python,Python 3.x,我有一个函数,它获取一个集合,从一小时开始,显示集合中存在的对象的数量。我想要的是这个集合保存当天发生的所有事件,并在晚上11:59写入文件,在下午12:00清理集合,第二天再次执行相同操作。目前,我的设置是在晚上11:59,它将检查有多少对象,并显示其数量,但它与发生的不匹配,例如在上午 def delayedCounter(delayedSet): now = datetime.now() date = now.strftime('%Y-%m-d') hour = date
def delayedCounter(delayedSet):
now = datetime.now()
date = now.strftime('%Y-%m-d')
hour = datetime.now().strftime('%H:%M')
with open('delayedData.csv', 'a+') as file:
if hour == '23:59':
file.write(len(delayedSet)
elif hour == '00:00':
delayedSet.clear()
我正在使用ApsScheduler来做一项工作,以便不时地执行主功能,如图所示
def trains():
try:
data = list(getRequest())
trainList = getTrain(data)
except Exception as e:
print(e)
scheduler = BackgroundScheduler()
scheduler.add_job(func=trains, trigger='interval', seconds=10 ,max_instances=100, misfire_grace_time=None)
scheduler.start()
写入集合的函数称为getDelayedCSV
def getDelayedCSV(trainList):
delayedSet = set()
word = 'Atrasado'
for train in trainList:
if word in train['status']:
delayedSet.update([train['id']])
主要目标是将经过条件验证的对象存储在集合中,然后在一天结束时,将所有对象写入delayedData.csv文件。请说明对象的存储方式以及缺少的对象的一些示例。集合包含唯一的值。我更新了代码,以便您可以看到我如何存储对象。我面临的唯一问题是,如果我让程序运行很长时间,当我打印len(delayedSet)时,它应该至少显示20个,但唯一显示的是从那一分钟开始的当前对象,而不是整个一天都是您的值到达
getDelayedCSV()
trainList和train['id']
unique?是的,它们都在列车列表上,然后我设置了if条件以查看它们是否“延迟”,如果该条件为真,则它应该写入集合忽略重复项每次调用getDelayedCSV
时,您都在创建delayedSet
。您想在程序启动时对其进行初始化吗?