我正在尝试创建一个更新函数,以便在或studentID与用户查询的匹配时更新同一csv文件中的学生分数值;我的csv文件如下所示;
Name, studentID, Marks, Grade
Joan, 1735, 90, A
Dev, 0374, 69, B
Betty, 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模块,则需要:
- 读取文件
- 将所有行保存到新列表中,并根据需要进行更新
- 将数据写入新文件
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)