当我写信给我时,我想在我的CSV文件中添加一个新行。 当前的CSV文件如下所示:
a,b,c
1,1,1
要附加到CSV文件的代码:
with open('mycsvfile.csv','a') as f:
writer=csv.writer(f)
writer.writerow(['0','0','0'])
new mycsvfile:
a,b,c
1,1,1,0,0,0
我想要的是什么:
a,b,c
1,1,1
0,0,0
答案 0 :(得分:5)
通过一些修补,我意识到你可以添加以下行,以确保你开始在csv中的新行上写。虽然看起来有点像个hackish。文档提到了很多关于kwarg newline =''的内容,但它没有被认为是有效的。
writer.writerow([])
我也打开'ab'参数。
import csv
with open('mycsvfile.csv','ab') as f:
writer=csv.writer(f)
writer.writerow([])
writer.writerow(['0','0','0'])
答案 1 :(得分:2)
问题是您的原始文件没有写入最终换行符。这再现了问题:
#!python3
import csv
#initial content
with open('mycsvfile.csv','w') as f:
f.write('a,b,c\n1,1,1') # NO TRAILING NEWLINE
with open('mycsvfile.csv','a',newline='') as f:
writer=csv.writer(f)
writer.writerow([0,0,0])
writer.writerow([0,0,0])
writer.writerow([0,0,0])
with open('mycsvfile.csv') as f:
print(f.read())
输出:
a,b,c
1,1,10,0,0
0,0,0
0,0,0
只需确保正确生成原始文件:
#!python3
import csv
#initial content
with open('mycsvfile.csv','w') as f:
f.write('a,b,c\n1,1,1\n') # TRAILING NEWLINE
with open('mycsvfile.csv','a',newline='') as f:
writer=csv.writer(f)
writer.writerow([0,0,0])
writer.writerow([0,0,0])
writer.writerow([0,0,0])
with open('mycsvfile.csv') as f:
print(f.read())
输出:
a,b,c
1,1,1
0,0,0
0,0,0
0,0,0
你可以做一些黑客来寻找文件的末尾并决定编写额外的换行符,但更好地修复现有的文件生成,因此它总是编写换行符。最简单的方法是从一开始就使用csv
模块,因为它总是会添加writerow
的换行符。
答案 2 :(得分:0)
搜索(0,2)表示转到文件的结束位置。
writer = open('mycsvfile.csv','a')
writer.seek(0,2)
writer.writelines("\r")
writer.writelines( (',').join(['0','0','0']))