csv.write 在写入 csv 时跳过行。

14 浏览
0 Comments

csv.write 在写入 csv 时跳过行。

这个问题已经在这里有了答案:

CSV file written with Python has blank lines between each row

我正在尝试通过以下方式写入csv文件

file = open('P:\test.csv', 'a') 
fieldnames = ('ItemID', 'Factor', 'FixedAmount')
wr = csv.DictWriter(file, fieldnames=fieldnames)
headers = dict((n, n) for n in fieldnames)
wr.writerow(headers)
wr.writerow({'ItemID':1, 'Factor': 2, 'FixedAmount':3})

然而,当我查看csv文件时,第一行是空的,第二行是我的标题,第三行再次为空,第四行显示条目1、2和3。为什么会在进行记录之前跳过一行?

编辑:使用python 3.2

admin 更改状态以发布 2023年5月25日
0
0 Comments

打赌你在用windows系统下运行(好吧,如果你的文件名叫做P:\test.csv,那就是一百个)。你可能会得到额外的\r

[编辑]

好吧,既然使用二进制模式会导致其他问题,那么这个如何:

file = open('P:\test.csv', 'w', newline='')

0
0 Comments

解决方案是在构造函数中指定“lineterminator”参数:

file = open('P:\test.csv', 'w')
fields = ('ItemID', 'Factor', 'FixedAmount')
wr = csv.DictWriter(file, fieldnames=fields, lineterminator = '\n')
wr.writeheader()
wr.writerow({'ItemID':1, 'Factor': 2, 'FixedAmount':3})
file.close()

0