Я сталкиваюсь с ошибкой, которая, как я знаю, часто встречается, но всегда есть небольшая проблема, которую я не могу понять.
Я также сделал функцию удаления, но она удаляет все в файле CSV вместо конкретной строки, даже с ошибкой. Как правильно сделать эту функцию?
После редактирования кода он по-прежнему выдает ту же ошибку, поэтому я надеюсь, что смогу получить некоторую помощь здесь, спасибо!
Формат данных в моем CSV:
name tribe id Air Water Earth Fire
Aang Normad N321B 89 67 54 78
Gyatso Omaticaya O111C 54 78 65 54
def insert_avatar():
filePath = "data.csv"
with open(filePath) as csvfile:
reader = csv.DictReader(csvfile)
filePath = "sample_write_data.csv"
with open(filePath,'a',newline='') as csvfile:
fieldnames = ['name','tribe','id','Air','Water','Earth','Fire']
writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
print("Insert a new avatar")
name = input("Enter Name:")
three_integer = int(input("Enter id three integers:"))
tribename = input("Enter tribe:")
air = int(input("Air:"))
water = int(input("Water:"))
earth = int(input("Earth:"))
fire = int(input("Fire:"))
id_F_letter = tribename[0].upper()
average_power = (air + water + earth + fire)/4
if average_power >=80:
last_letter = 'A'
elif average_power >= 70:
last_letter ='B'
elif average_power >= 60:
last_letter ='C'
elif average_power >=50:
last_letter ='D'
elif average_power >= 40:
last_letter ='E'
else:
last_letter = 'F'
ID = id_F_letter + str(three_integer)+ last_letter
print("New Avatar with ID {0} Inserted".format(ID))
info =[]
Avatar_List ={}
Avatar_List['name'] = name
Avatar_List['id'] = ID
Avatar_List['tribe'] = tribename
Avatar_List['Air'] = air
Avatar_List['Water'] = water
Avatar_List['Earth'] = earth
Avatar_List['Fire'] = fire
info.append(Avatar_List)
for dictionary in info:
if csvfile.tell() == 0:
writer.writeheader()
writer.writerow(dictionary)
def d_avatar():
filePath = "data.csv"
with open(filePath) as csvfile:
reader = csv.DictReader(csvfile)
filePath = "sample_write_data.csv"
with open(filePath,'w',newline='') as csvfile:
fieldnames = ['name','tribe','id','Air','Water','Earth','Fire']
writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
print("Delete an avatar")
deletion = input("Enter avatar id to delete: ")
for row in reader:
if row['id'] == deletion:
del row
print("Avatar Record Deleted")