Python循环处理多文档导出CSV:如何避免内容覆盖实现逐行追加?
解决循环写入CSV时覆盖内容的问题
你的核心问题是每次循环调用df.to_csv()时,默认使用**写入模式('w')**直接覆盖了原有文件。要实现追加写入,只需修改两个关键参数,并处理表头重复的问题:
关键修改点
- 添加
mode='a':将文件打开模式设为追加,新数据会追加到文件末尾 - 控制表头输出:只在第一次写入时生成表头,后续循环跳过表头,避免重复
修改后的完整代码
from pdfminer.high_level import extract_text import glob import pandas as pd import os # 导入os模块检查文件是否存在 for selectedfile in glob.glob(r'C:\Users\...\*.pdf'): text = extract_text(selectedfile) Y = set(text) Z = [] Znew = [] for val in Y: occurrences = wordlist2.count(val) if occurrences > 50: # 定义最小出现次数 Z.append(val) Znew.append(occurrences) # 别用内置关键字dict当变量名,改成data_dict避免冲突 data_dict = {'Stem': Z, 'Count': Znew} df = pd.DataFrame(data_dict) # 判断文件是否存在,决定是否写表头 file_exists = os.path.exists('Exported list.csv') # 追加模式写入,第一次写表头,后续跳过 df.to_csv('Exported list.csv', mode='a', header=not file_exists, index=True, encoding='utf-8')
额外说明
- 把
dict改成data_dict是因为dict是Python的内置类型,用作变量名可能引发意外问题 - 确保
wordlist2是在循环外定义好的全局变量,或能在循环内正确获取到统计所需的词表
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

