0

我将一个文件夹中的多个 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()
4

2 回答 2

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)
于 2013-08-06T14:03:45.217 回答
0

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

copy *.csv all.csv

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

编辑:如果你想在 python 内部:

import os
os.system('copy *.csv all.csv')
于 2017-01-21T00:31:52.330 回答