簡體   English   中英

使用python將一個csv文件的內容附加到另一個

[英]append content of one csv file to another using python

我有 2 個 csv 文件:

  • 輸出.csv
  • 輸出1.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

我想看看我是否可以讓兩個文件在同一個文件中生成我的輸出..

如果我正確理解你的問題,你想創建一個包含41列的csv - 來自output.csv的1,后面是output1.csv中的40。 我假設他們有相同的行數(如果沒有 - 什么是必要的行為?)

嘗試使用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'標志。

最近的討論看起來非常相似,不同之處在於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()

試試這個,這應該工作,因為你只想做相當於cat src1 src2 > target shell命令的cat src1 src2 > target

“我需要將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)

如果你想傳遞一個條件,你也可以使用閱讀器的生成器:

import csv
def read_generator(filepath:str):
   with open(filepath, 'rb'):
     reader = csv.reader(f)
     for row in reader:
       if row[0] == condition:
         yield row

然后用它寫:

writer = csv.writer(open("process.csv", "rb"))
write.writerow(read_generator(file_to_read.csv))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM