运行实验时结果不同但CSV文件内容重复的问题咨询
问题原因分析
rows变量未正确更新:这是最常见的核心问题——每次实验生成的新结果根本没同步到rows里。比如rows被初始化后就没再修改,或者实验逻辑里把新数据追加/替换到rows的代码写错了,导致每次都是用旧数据生成DataFrame。- 缓存机制干扰:如果实验代码里用了缓存(比如
@lru_cache装饰器、第三方缓存库),或者某些计算步骤被系统/框架缓存,会导致每次运行都直接取旧结果,而非重新计算。 - 数据生成流程断裂:从实验计算的源头到
rows的传递环节出问题,比如计算成本的函数返回了新值,但没正确赋值给rows,或者rows被意外重置为初始状态。 - 文件写入异常未被捕获:虽然改文件名也有问题,但如果目标目录无写入权限,或者写入过程中抛出异常但被忽略,可能导致实际没写入新数据,你看到的还是之前残留的文件(不过你已经删过文件,这个概率较低)。
实验前必查事项
- 先验证
rows的内容:在生成DataFrame的代码前加print(rows),确认每次运行时rows的内容是新的实验结果,而不是重复旧数据。如果打印出来还是旧值,直接排查rows的更新逻辑。 - 临时禁用缓存:如果代码里有缓存相关的代码(比如装饰器),先注释掉再运行,看结果是否更新。
- 检查数据传递链路:从实验计算的第一步开始,逐步打印中间结果,确认每一步都生成了新值,并且正确传递到
rows变量中。 - 改用显式文件流写入:替换现有的
to_csv写法,用with open确保数据完全落盘,避免缓冲问题:with open('./data/cost_results.csv', 'w', newline='') as f: df.to_csv(f, index=False) - 捕获写入异常:在写入代码周围加try-except,确认是否有写入失败的情况:
try: df.to_csv('./data/cost_results.csv', index=False) print("文件写入成功") except Exception as e: print(f"写入失败: {e}")
内容的提问来源于stack exchange,提问作者user160898
相关产品推荐
相关产品推荐

