我的代码有问题。我试图从文件中删除特定的行。我正在Tkinter中创建一个待办事项列表程序,我正在使用Label作为待办事项列表。我有两个按钮,“添加项目”和“删除项目”。我还有一个输入框,按钮使用.get()方法从条目中获取字符串。删除按钮不起作用,因为我找不到从程序用于存储列表的文件中删除行的方法。我查看了很多关于同样问题的其他帖子,但我的不同。每当我运行程序,并在填写文本框后单击删除项目时,它会从文件中删除所有项目,但我只想删除一个项目。问题不在于@JetMashKangaroo在这篇文章中的问题:How to delete a line from a file in Python。
以下是代码片段:
def dele():
global ItemName
global Display
global List
ToDoDel = ItemName.get()
new_f = List.readlines()
List.seek(0)
for line in new_f:
if ToDoDel not in line:
List.write(line)
List.truncate()
Display['text'] = List.readlines()
ItemName是输入框。显示是显示待办事项列表的标签。列表是下面的变量:
List = open('***/***/To-Do_List.txt','r+')
该程序运行正常,但我无法添加此删除功能,因为它删除了文件中的所有文本。按下“删除项目”按钮时,将调用函数dele。非常感谢帮助。
答案 0 :(得分:1)
您遇到问题的最可能原因是您正在尝试修改列表,同时也会迭代它。遇到类似问题的其他人的Here's an example帖子。
我的建议是你在循环中跟踪要修改的索引,然后在循环完成后删除它们。