我有一个代码,当我运行它时,它会向csv文件添加信息,但每次添加新内容时它都会跳过一行。怎么阻止它?
import csv
if group == '1':
with open('class1.csv', 'a') as csvfile:
fieldnames = ['Forename', 'Surname', 'Score']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({'Forename': name, 'Surname': name1, 'Score':score})
elif group == '2':
with open('group1.csv', 'a') as csvfile:
fieldnames = ['Forename', 'Surname', 'Score']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({'Forename': name, 'Surname': name1, 'Score':score})
elif group == '3':
with open('class3.csv', 'a') as csvfile:
fieldnames = ['Forename', 'Surname', 'Score']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({'Forename': name, 'Surname': name1, 'Score':score})
答案 0 :(得分:0)
我认为您在每个writer.writeheader
和if
条件中错过了elif
if group == '1':
with open('class1.csv', 'a') as csvfile:
fieldnames = ['Forename', 'Surname', 'Score']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() #you missed it
writer.writerow({'Forename': 'name', 'Surname': 'name1', 'Score':'score'})
#rest of code
答案 1 :(得分:0)
(假设你都在Python 3 中):
with open('mycsv.csv', 'a') as csvfile:
如果您使用的是Windows计算机,请尝试:
with open('mycsv.csv', 'a', newline='') as csvfile:
编辑:解释/澄清
Per Python' documentation on csv writer,
如果csvfile是一个文件对象[意思是,如果传递给csv writer的文件名为csvfile],则应该使用newline ='' ...
如果换行=''未指定,新行嵌入在引用字段中 将无法正确解释,并在平台[如Windows] 在写一个额外的\ r \ n时使用\ r \ n linendings将被添加。这应该 指定newline =''总是安全的,因为csv模块会执行它 自己(通用)换行处理。
正如martineau指出的那样,你可以通过以字节模式(' ab'或' wb')写入文件来避免Python 2中的这个问题。 Python 3的csv模块喜欢使用字符串,而不是字节。因此,它应该以文本模式打开(' w'或者' a')。