我将文件夹中的多个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()
答案 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')