我正在尝试通过以下
写入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
答案 0 :(得分:35)
解决方案是指定" 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()
答案 1 :(得分:5)
二十个quatloos说你在windows下运行(好吧,一百个,因为你的文件名为P:\test.csv
)。你可能会得到额外的\r
。
[编辑]
好的,因为使用二进制模式会导致其他问题,所以:
file = open('P:\test.csv', 'w', newline='')
答案 2 :(得分:0)
是否可以在追加模式下打开输出文件?
file = open('P:\test.csv', 'a')
# ^
而不是写模式?如果多次运行程序,则每次运行的输出都将在该文件中...
答案 3 :(得分:0)
我遇到了这个问题,这是因为我正在使用\ n \ r。我改变到\ n和现在运转。
答案 4 :(得分:-1)
您需要向'open()'函数传递一个附加参数:
file = open('P:\test.csv', 'a', newline='')
这将避免跳过行。