csv.write在写入csv时跳过行

use*_*138 22 python csv

我试图通过以下内容写入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})
Run Code Online (Sandbox Code Playgroud)

但是,当我查看csv文件时,第一行是空的,第二行是我的标题,第三行是空的,第四行显示条目1,2和3.为什么它>之前跳过一行它进入了吗?

编辑:使用python 3.2

Lan*_*aru 38

解决方案是在构造函数中指定"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()
Run Code Online (Sandbox Code Playgroud)


DSM*_*DSM 6

二十个quatloos说你在windows下运行(好吧,一百个,因为你的文件被调用P:\test.csv).你可能得到额外的\rs.

[编辑]

好的,因为使用二进制模式会导致其他问题,这个怎么样:

file = open('P:\test.csv', 'w', newline='')
Run Code Online (Sandbox Code Playgroud)