我想创建一个能够合并两个csv文件(相同数量的列)的函数。这是我的功能
def Gather(fullpathin,fullpathout):
fin=open(fullpathin,'rb')
finr=csv.reader(fin)
fout=open(fullpathout,'ab')
foutw=csv.writer(fout)
for row in finr:
foutw.writerow(row)
fin.close()
fout.close()
问题:当我打开最终文件时,我要合并的两个行块之间有一个空行。如何直接附加到第二个文档的下一行? 提前谢谢!
编辑:实际上我的文件中没有空行。仅举例:
f1=open('Book1.csv','wb')
f1w=csv.writer(f1)
f1w.writerow(['bonjour','hello','guten tag'])
f2=open('Book2.csv','wb')
f2w=csv.writer(f2)
f2w.writerow(['au revoir','good bye','auf widersehen'])
f1.close()
f2.close()
然后,当我应用我的功能时:
Gather('Book1.csv','Book2.csv') # I add the condition 'if any(row):' as mentionned
我现在有三排:['au revoir','再见','auf widersehen'],[]和['bonjour','hello','guten tag']。
答案 0 :(得分:0)
两个提示:
row
有内容并且没有将其写入文件,如果为空。这样可以防止空行。答案 1 :(得分:0)
如果没有必要,请不要关闭文件,以加快速度;
而不是传入fullpathout
,传递foutw
。
您可以跳过空行。由于row
是一个列表,因此可以使用any
轻松检查行上的内容。
因此我们得到:
def gather(fullpathin, foutw):
fin = open(fullpathin, 'rb')
finr = csv.reader(fin)
for row in finr:
if any(row): # there must be text in at least 1 of the cells
foutw.writerow(row)
fin.close()