def del_book(): book_id = input("请输入要删除的图书编号:") with open('book.csv', 'a', encoding='utf-8', newline='') as f: lines = f.read(f) lines = list(lines)这段哪里错了
时间: 2023-12-28 12:03:24 浏览: 123
django_book_project:django_sample
这段代码有两个错误:
1. 打开文件时,使用了 `'a'` 模式,这是追加模式,意味着你只能往文件中追加新的内容,而不能对原来的内容进行修改。因此,如果你想删除一条记录,应该使用 `'r+'` 模式来打开文件。
2. 在读入文件之后,你使用了 `list()` 函数来将文件内容转换成了一个列表。但是,文件对象本身就已经是一个可迭代对象,你不需要将它转换成列表,否则会额外占用内存空间。
下面是修改后的代码:
```
def del_book():
book_id = input("请输入要删除的图书编号:")
with open('book.csv', 'r+', encoding='utf-8', newline='') as f:
lines = f.readlines()
f.seek(0) # 将文件指针移动到文件开头
for line in lines:
if book_id in line:
continue
f.write(line)
f.truncate() # 截断文件,删除多余的内容
```
这段代码使用了 `readlines()` 函数来读取文件内容,然后遍历每一行,找到要删除的记录并跳过,将其余记录写回文件中。最后,使用 `truncate()` 函数来截断文件,删除多余的内容。
阅读全文