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

如何修改Python CSV合并代码以读取所有文件的全部行?

解决CSV合并时跳过非首文件首行的问题

嘿,这个问题很好解决~你现在的代码里,if i != 0:的判断逻辑会让你处理第二个及以后的CSV文件时,自动跳过它们的第一行。要读取所有文件的全部行,只需要把这个跳过首行的逻辑删掉就行。我给你两种修改方案,看你更倾向哪种:

方案一:使用Pandas批量合并(最省心)

既然你已经导入了pandas,用这个方法可以一键搞定所有合并逻辑,还能自动处理列对齐:

#!/usr/bin/env python
import pandas as pd
import glob

# 目标文件夹路径
path = r'/Users/sonia/Animalsmanage/output'
# 获取文件夹下所有CSV文件的路径
all_csv_files = glob.glob(f"{path}/*.csv")

# 批量读取所有CSV文件,合并成一个DataFrame
merged_df = pd.concat([pd.read_csv(file) for file in all_csv_files], ignore_index=True)

# 保存合并后的最终文件,index=False表示不生成额外的行索引
merged_df.to_csv('finaloutput.csv', index=False)

说明:这个方法会完整读取每个CSV的所有行,不管文件有没有表头。如果所有文件的表头一致,会自动对齐列;如果表头不同,也会保留所有列,不会丢失任何数据。

方案二:修改原生文件读写逻辑

如果你想保留原来的逐行读写方式,只需要去掉跳过首行的判断即可:

#!/usr/bin/env python
import glob, os
import csv

path = r'/Users/sonia/Animalsmanage/output'
allFiles = glob.glob(path + "/*.csv")

with open('finaloutput.csv', 'w', newline='', encoding='utf-8') as outfile:
    writer = csv.writer(outfile)
    i = 0
    for filename in allFiles:
        with open(filename, 'r', encoding='utf-8') as infile:
            reader = csv.reader(infile)
            # 删掉原来的if i !=0: 跳过首行的逻辑,直接写入所有行
            for row in reader:
                writer.writerow(row)
        i += 1

说明:移除了导致跳过非首文件首行的判断后,每个CSV文件的每一行都会被完整写入到最终文件中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:17:57