将CSV文件合并为1个CSV

时间:2013-08-06 13:59:34

标签: python csv

我将文件夹中的多个CSV组合成一个CSV,出于某种原因,当我运行代码时,它会将相同的文件复制到1并重复自身。对不起,如果那是模糊的。这是我正在运行的代码,这可能比我更好地解释它。

import csv
import glob

fo = open("CombinedLog.csv", "ab")

list = glob.glob('*.csv')
print list

for file in list:
  ifile  = open(file, "rb")
  reader = csv.reader(ifile)
  for row in reader:
    row = ",".join(row) + "\n"
    fo.write(row)
ifile.close()

fo.close()

2 个答案:

答案 0 :(得分:0)

您为附加打开了CombinedLog.csv;每次运行此脚本时,都会将更多数据添加到最后,并保留旧数据。

您的代码工作正常,但我会使用csv.writer()格式化输出行而不是','.join();您可以将csv.reader()对象直接提供给csv.writer() .writerows()方法并完成。

我还将文件对象用作具有with语句的上下文管理器,并自动关闭它们:

import csv
import glob

with open("CombinedLog.csv", "wb") as fo:
    fo_writer = csv.writer()

    csv_files = glob.glob('*.csv')
    for filename in csv_files:
    with open(file, "rb") as ifile:
        reader = csv.reader(ifile)
        fo_writer.writerows(reader)

答案 1 :(得分:0)

如果这就是你正在做的事情,并且你不想要一个完整的程序...在Windows目录中的命令提示符下,你可以运行:

copy *.csv all.csv

这使用通配符*复制所有CSV并创建一个名为“all.csv”的新文件,其中包含所有数据。

编辑: 如果你想在python里面:

import os
os.system('copy *.csv all.csv')