我想在写入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'])
新的 mycsvfile:
a,b,c
1,1,1,0,0,0
我想要什么:
a,b,c
1,1,1
0,0,0
通过一些尝试,我发现您可以添加以下行以确保在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'])
#!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
seek(0,2) 的意思是跳转到文件的末尾位置。
writer = open('mycsvfile.csv','a')
writer.seek(0,2)
writer.writelines("\r")
writer.writelines( (',').join(['0','0','0']))
['0','0','0']
时,文件末尾缺少换行符。 - Framester