使用Python将一个CSV文件的内容追加到另一个文件
我有两个csv文件:
- output.csv
- output1.csv
output.csv有5列标题。
而output1.csv有大约40列不同类型的数据。
我需要把output1.csv里的所有内容添加到output.csv里。请问我该怎么做?
有没有人能给我一点提示呢???
我有以下代码:
reader=csv.DictReader(open("test.csv","r"))
allrows = list(reader)
keepcols = [c for c in allrows[0] if all(r[c] != '0' for r in allrows)]
print keepcols
writer=csv.DictWriter(open("output.csv","w"),fieldnames='keepcols',extrasaction='ignore')
writer.writerows(allrows)
with open("test1.csv","r") as f:
fields=next(f).split()
# print(fields)
allrows=[]
for line in f:
line=line.split()
row=dict(zip(fields,line))
allrows.append(row)
# print(row)
keepcols = [c for c in fields if any(row[c] != '0' for row in allrows)]
print keepcols
writer=csv.DictWriter(open("output1.csv","w"),fieldnames=keepcols,extrasaction='ignore')
writer.writerows(allrows)
test.csv生成output.csv
test1.csv生成output1.csv
我在尝试看看能不能让这两个文件的内容都生成到同一个文件里……
4 个回答
0
“我需要把output1.csv里的所有内容加到output.csv里。” … 如果字面意思理解,就是把第一个文件里的每一行都写到第二个文件后面。你是这个意思吗?
标题是什么?是另一个文件里的40列的标题吗?如果是这样的话,假设你想把这些标题作为一行列标题写上:
import csv
titles = [x[0] for x in csv.reader(open('titles.csv', 'rb'))]
writer = csv.writer(open('merged.csv', 'wb'))
writer.writerow(titles)
for row in csv.reader(open('data.csv', 'rb')):
writer.writerow(row)
4
最近有个讨论跟你想要的很像,只不过那里的提问者想要合并的是mp3文件。
编辑:
import os, sys
target = '/path/to/target'
src1 = '/path/to/source1.csv'
src2 = '/path/to/source2.csv'
tf = open(target, 'a')
tf.write(open(src1).read())
tf.write(open(src2).read())
tf.close()
试试这个,这个应该可以用,因为你只是想做一个跟命令行中 cat src1 src2 > target
一样的操作。
8
如果我理解你的问题没错的话,你想要创建一个包含41列的csv文件——第一列来自output.csv,后面的40列来自output1.csv。我假设这两个文件的行数是一样的(如果不一样,那应该怎么处理呢?)
你可以试试使用csv模块:
import csv
reader = csv.reader(open('output.csv', 'rb'))
reader1 = csv.reader(open('output1.csv', 'rb'))
writer = csv.writer(open('appended_output.csv', 'wb'))
for row in reader:
row1 = reader1.next()
writer.writerow(row + row1)
如果你的csv文件使用了特殊的分隔符或引号字符,你可以在csv.reader和csv.writer对象中使用一些可选的关键字参数。详细信息可以查看Python的csv模块文档...
编辑:根据建议,添加了'b'标志。