web-gelistirme-sc.com

csv.write csv'ye yazarken satır atlama

Aşağıdaki ile bir csv dosyasına yazmaya çalışıyorum

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})

Ancak, csv dosyasına baktığımda ilk satır boş, ikinci satır başlığım, üçüncü satır tekrar boş ve dördüncü ow 1,2 ve 3 girişlerini gösteriyor. Neden> önce bir satır atlıyor? bir giriş yapar?

EDIT: python 3.2 kullanarak

18
user1266138

Çözüm, yapıcıdaki "lineterminator" parametresini belirtmektir:

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()
34
Lanaru

Yirmi quatloos, pencerelerin altında çalıştığınızı söylüyor (yani, dosyanızın P:\test.csv olarak adlandırılması şartıyla yüzlerce). Muhtemelen ekstra \rs alıyorsunuz.

[Düzenle]

Tamam, ikili mod kullanmak diğer sorunlara neden olduğundan, buna ne dersiniz:

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

Bu sorunu yaşadım ve bunun nedeni kullanıyordu.\N olarak değiştirdim ve şimdi çalışıyor.

0
Dorian

Çıktı dosyasını ekleme modunda açıyor olabilir misiniz?

file = open('P:\test.csv', 'a') 
#                           ^

Yazma modu yerine? Programı birkaç kez çalıştırırsanız, her çalıştırmadan elde edilen çıktı o dosyada olur ...