使用if语句向csv文件添加列

2024-10-03 17:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个算术测验,向学生提问,然后将他们的名字和分数保存到csv文件中。你知道吗

我想创建一段代码,它将询问csv文件的if语句。比如,如果名字已经在第一列,在新列上加上新的分数。你知道吗

这就是我写的名字和得分到csv文件。你知道吗

if Class==("a"):
    with open("a.csv","a") as my_file:
    my_file.write("{}, {}/10\n".format( name,correctanswers))

这会将名称和分数写入类文件,但在写入文件之前,我需要一个if语句。你知道吗

伪代码:

if name = column1 on a.csv:
    then write correctanswers to new column
else:
    write name and score on a.csv

所以,假设我再次参加了测验,我的名字已经在csv上了,我需要代码来获取我的新分数,并将其添加到csv上的现有记录中(将新分数保存在下一列)。你知道吗


Tags: 文件csv代码nameifonmy算术
1条回答
网友
1楼 · 发布于 2024-10-03 17:28:18

如果您以"a"(append)模式打开一个文件,那么显然您不能修改或更新文件中的现有记录,因为所有写入操作都发生在文件的最后一个位置之后。你知道吗

您应该将整个CSV文件读入内存,更新那里的记录,然后写回整个文件(最好在完成所有修改之后)。你知道吗

像这样的方法可能有用:

import csv
def readcsv(filename):
    with open(filename,"rb") as csvfile: # assuming Python 2 
        return dict(csv.reader(csvfile))

然后你会有一个字典,里面有所有的名字和他们的分数,很容易更新(使用setdefault())。缺点是您将丢失条目在CSV文件中存储的顺序。你知道吗

将词典保存为CSV文件也很简单:

def writecsv(mydict, filename):
    with open(filename,"wb") as csvfile: # assuming Python 2 
        writer = csv.writer(csvfile)
        writer.writerows(mydict.iteritems())

相关问题 更多 >