You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用to_csv循环仅保存最后一个文件的问题排查

问题原因与修复方案

这个问题的根源非常清晰——你在循环中没有更新用于生成文件名的变量n!

具体分析

你初始化了n = 0,但整个循环过程中n的值始终保持为0。这意味着每次调用to_csv()时,生成的文件名都是derived_{0+1}.csv,也就是derived_1.csv。每次循环都会把新的处理结果写入同一个文件,后面的内容直接覆盖掉之前的输出,最终你看到的derived_1.csv其实是最后一个文件(file3.csv)的处理结果,前两个文件的输出早就被覆盖了。

修复后的代码

这里提供两种简单的修复方式:

方式1:手动递增变量n

from pathlib import Path
import pandas as pd
import os
import glob

# 注意:glob模块需要调用glob.glob()函数
files = glob.glob("C:/Users/61437/Desktop/test_folder/*.csv") 
n = 0
for file in files:
    print(file)
    df = pd.read_csv(file, index_col = False)
    d = calc_missing_prices(df) # 调用自定义函数
    print(d)
    # 写入文件
    d.to_csv(r'C:\Users\61437\Desktop\test_folder\derived_files\derived_{}.csv'.format(n+1), index = False)
    n += 1 # 关键:每次循环后让n自增,确保文件名唯一

方式2:使用enumerate获取循环索引(更简洁)

enumerate可以直接帮你获取循环的索引,还能指定起始值,避免手动维护变量:

from pathlib import Path
import pandas as pd
import os
import glob

files = glob.glob("C:/Users/61437/Desktop/test_folder/*.csv") 
# start=1让索引从1开始,直接对应derived_1、derived_2...
for idx, file in enumerate(files, start=1):
    print(file)
    df = pd.read_csv(file, index_col = False)
    d = calc_missing_prices(df)
    print(d)
    d.to_csv(r'C:\Users\61437\Desktop\test_folder\derived_files\derived_{}.csv'.format(idx), index = False)

额外注意

你原来的代码中files = glob("C:/Users/...")应该修正为glob.glob("C:/Users/..."),这是glob模块的标准调用方式,否则可能会触发报错。

内容的提问来源于stack exchange,提问作者ARH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:32:31