在Python中仅使用csv包在条件匹配时更新单元格值
我试图创建一个更新函数,以便在用户查询的或studentID匹配时更新同一csv文件中的学生分数值;我的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'
姓名、学号、分数、年级
琼,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)