使用python将一个csv文件的内容附加到另一个csv文件

2024-03-28 20:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个csv文件:

  • 输出.csv
  • 输出1.csv

output.csv有5列标题。
csv有大约40列不同类型的数据。

我需要将output1.csv的所有内容附加到output1.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生成输出.csv
test1.csv生成output1.csv

我想看看我是否可以让两个文件在同一个文件中生成输出。。


Tags: 文件csvinfieldsforoutputlineopen
3条回答

“我需要将output1.csv的所有内容附加到output1.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)

如果我正确理解您的问题,您需要创建一个包含41列的csv—1列来自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's csv module documentation。。。

编辑:按建议添加了“b”标志。

This最近的讨论看起来与您要查找的内容非常相似,只是其中的OP想要连接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()

尝试一下,这应该可以工作,因为您只需要执行与shell命令cat src1 src2 > target等价的命令

相关问题 更多 >