我正在尝试在csv文件中编辑一行。我有一个看起来像下面的CSV文件:
类型|食物类型|进料时间|洗涤时间
LION | MEAT | 4H | 1D
FOX | MEAT | 5H | 3D
HEN | SEED | 6H | 6D
鱼|植物| 7H | 99D
我想根据其TYPE编辑该行。如果用户要编辑FOX行,则只需在出现提示时键入FOX。我面临的问题是由于某种原因我无法编辑文件。
下面是我的代码,我打开现有的数据库,找到有问题的行,进行更改,然后将其与其他行一起写入临时文件,以覆盖原始文件。
def edit_animal_entry(type):
with open(animal_csv, 'r') as file_read:
reader = csv.reader(file_read, delimiter="|")
with open(temp, 'w') as file_write:
writer = csv.writer(file_write)
for row in reader:
print(f"{' | '.join(row)}")
if row[0] == type:
animal_type, animal_food, animal_feed, animal_wash = animal_inputs()
writer.writerow([animal_type, animal_food, (animal_feed+"H"), (animal_wash+"D")])
else:
writer.writerow(row)
shutil.move(temp, animal_csv)
答案 0 :(得分:2)
您已经通过在读取文件之前停止with
块来“关闭”读取的文件。因此,您不会遍历输入文件。一种解决方案是使用以下语句在同一输入框中打开输入和输出文件:
def edit_animal_entry(type):
with open(animal_csv, 'r') as file_read, open(temp, 'w') as file_write:
reader = csv.reader(file_read, delimiter="|")
writer = csv.writer(file_write)
for row in reader:
print(f"{' | '.join(row)}")
if row[0] == type:
animal_type, animal_food, animal_feed, animal_wash = animal_inputs()
writer.writerow([animal_type, animal_food, (animal_feed+"H"), (animal_wash+"D")])
else:
writer.writerow(row)
shutil.move(temp, animal_csv)