[英]append content of one csv file to another using python
我有 2 個 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.