在Python中仅使用csv包在条件匹配时更新单元格值

在Python中仅使用csv包在条件匹配时更新单元格值,python,csv,Python,Csv,我试图创建一个更新函数,以便在用户查询的或studentID匹配时更新同一csv文件中的学生分数值;我的csv文件如下所示 姓名、学号、分数、年级 琼,1735,90,A 德夫,0374,69,B 贝蒂,647,55,C 我的密码是: def updatefunc(): stid= input("Enter a studentID : ") fieldnames = ["Name", "StuID", 'Marks', 'Grade'

我试图创建一个更新函数,以便在用户查询的或studentID匹配时更新同一csv文件中的学生分数值;我的csv文件如下所示

姓名、学号、分数、年级
琼,1735,90,A
德夫,0374,69,B
贝蒂,647,55,C
我的密码是:

def updatefunc():
stid= input("Enter a studentID : ")
fieldnames = ["Name", "StuID", 'Marks', 'Grade']
with open('File.csv', 'r') as csvfile, open('output.csv', 'w') as output:
    reader = csv.DictReader(csvfile, fieldnames=fieldnames)
    writer = csv.DictWriter(output, fieldnames=fieldnames)
    for row in reader:
        if chid == row['ID']:
            row['Marks'] = input("enter new name  {}".format(Marks))
        
        writer.writerow({'Name': row['Name'], 'StuID': row['StuID'], 'Marks': row['Marks'],'Grade': row['Grade']})

如果您仅限于使用csv模块,则需要:

  • 读文件
  • 将所有行保存到新列表中,并根据需要进行更新
  • 将数据写入新文件

这有用吗?答案在线程中使用了两个文件,但我需要将更新的行保存在同一个文件中。您可以查看。你或者需要遵循这个例子-写入一个临时文件,然后重命名,或者将文件读入内存并更新数据,关闭它,然后在写入模式下重新打开并写出数据。我只想使用csv包…还有另外两个包..难道不可能只使用csv包吗?
def updatefunc():
    new_rows = []
    stid= input("Enter a studentID : ")
    fieldnames = ["Name", "StuID", 'Marks', 'Grade']
    with open('File.csv', 'r') as csvfile:
        reader = csv.DictReader(csvfile, fieldnames=fieldnames)
        for row in reader:
            if stid == row['StuID']:
                row['Marks'] = input("enter new name  {}".format(Marks))
            new_rows.append({'Name': row['Name'], 'StuID': row['StuID'], 'Marks': row['Marks'],'Grade': row['Grade']})

    # Write the amended data out to the file.
    with open('File.csv', 'w') as output:
        writer = csv.DictWriter(output, fieldnames=fieldnames)
        writer.writerows(new_rows)