使用Dict阅读器,如何插入CSV文件



我应该将CSV文件加载到程序内存中,当用户选择选项1时,他们可以添加学生的详细信息。按下"ENTER"后,程序将把用户输入写入csv文件。我有点让它工作,但如果用户决定添加另一个用户,它会覆盖CSV中已经存在的第一个学生详细信息。

到目前为止,我拥有的是:

def insert_student():
print()
print("Insert a new student:")
first_name = input("Enter first name:")
last_name = input("Enter last name:")
student_id = input("Enter student ID:")
student_info = {"first_name":first_name,"last_name":last_name,"student_id":student_id}
import csv
filePath = "data.csv"        
with open(filePath, 'w', newline='') as csvfile:
fieldnames = ['first_name', 'last_name', 'student_id']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'first_name': first_name,
'last_name': last_name,
'student_id': student_id})
print("New Student Record Inserted")

当用户决定添加多个学生详细信息时,我如何使其不被覆盖,并将其添加到新行?

您必须以'a'模式打开文件,并且只有当它是新的csv文件时才写入头,试试这个:

import os
import csv
def insert_student():
print()
print("Insert a new student:")
first_name = input("Enter first name:")
last_name = input("Enter last name:")
student_id = input("Enter student ID:")
student_info = {"first_name": first_name, "last_name": last_name, "student_id": student_id}

filePath = "data.csv"

edit_mode = os.path.isfile(filePath)
with open(filePath, 'a', newline='') as csvfile:
fieldnames = ['first_name', 'last_name', 'student_id']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
if not edit_mode:
writer.writeheader()
writer.writerow({'first_name': first_name,
'last_name': last_name,
'student_id': student_id})
print("New Student Record Inserted")

以'a'模式打开文件:

filePath = "data.csv" 
with open(filePath, 'a', newline='') as csvfile:
fieldnames = ['first_name', 'last_name', 'student_id']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({'first_name': first_name,
'last_name': last_name,
'student_id': student_id})
print("New Student Record Inserted")

最新更新