如何在PyCharm中每日自动保存字典数据至表格并保留历史记录?
解决CSV存储每日字典数据不被覆盖的问题
默认用open()函数写CSV时,若使用'w'模式会直接覆盖原有文件,改用追加模式即可保留历史数据,同时要处理好表头的写入逻辑(只在第一次运行时写表头)。以下是两种实用实现方式:
方法1:使用标准库csv模块
import csv import os from datetime import date # 每日更新后的字典(固定10个键,建议添加日期字段区分历史) daily_data = { "key1": 246, "key2": "xyz", "key3": 78.9, # 补充剩余7个固定键 "record_date": str(date.today()) } csv_path = "daily_data.csv" # 提取字典的键作为CSV表头 field_names = list(daily_data.keys()) # 检查文件是否已存在 file_exists = os.path.isfile(csv_path) # 以追加模式打开文件 with open(csv_path, mode='a', newline='', encoding='utf-8') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=field_names) # 仅当文件不存在时写入表头 if not file_exists: writer.writeheader() # 追加当日数据行 writer.writerow(daily_data)
方法2:使用pandas库(适合熟悉数据处理的场景)
import pandas as pd from datetime import date daily_data = { "key1": 246, "key2": "xyz", "key3": 78.9, # 补充剩余7个固定键 "record_date": str(date.today()) } csv_path = "daily_data.csv" # 将字典转为DataFrame df = pd.DataFrame([daily_data]) # 判断文件是否存在,决定是否写入表头 file_exists = os.path.isfile(csv_path) # 以追加模式写入,index=False避免写入行索引 df.to_csv(csv_path, mode='a', index=False, header=not file_exists, encoding='utf-8')
关键注意点
- 务必保证每次的字典键顺序和表头一致,避免数据错位
- 强制添加日期字段(如示例中的
record_date),否则无法区分各条历史数据对应的日期 - 可根据需求添加异常捕获逻辑,防止文件写入失败导致程序中断
内容的提问来源于stack exchange,提问作者Xavier Benitez
相关产品推荐
相关产品推荐

