我有一个递归函数,它从一个文件中读取一个scout记录列表,然后按其ID的顺序添加到一个列表框中。用addScouts(1)
调用函数。函数如下:
def addScouts(self,I):
i = I
with open(fileName,"r") as f:
lines = f.readlines()
for line in lines:
if str(line.split(",")[3])[:-1] == str(i):
self.scoutList.insert(END,line[:-1])
i += 1
return self.addScouts(i)
return
我的问题是我的文件ID是有序的1,2,4,5
,因为在某个时候我删除了ID为3的scout。但是,当我运行函数在列表框(上面的函数)中对侦察兵重新排序时,它只列出ID 3之前(包括ID 3)的侦察兵。这是因为当i = 3
时,文件中的所有项都不等于3,因此函数到达末尾并在有机会检查其余记录之前返回。你知道吗
文件内容:
Kris,Rice,17,1
Olly,Fallows,17,2
Olivia,Bird,17,4
Louis,Martin,18,5
你知道怎么解决吗?你知道吗
只需按最后一列排序:
您可以使用对分查找新数据的放置位置,以便在对数据排序一次后保持数据的有序性:
输出:
一种更简单的方法是检查第一行是否具有更高的id,如果没有更高的id,只需附加到末尾:
输出:
为了在添加新值时始终保持文件的有序性,我们只需写入临时文件,将行写入正确的位置,然后用更新的文件替换原始文件:
你知道吗foo.csv文件之后,数据将按顺序排列:
您可以检查列表的长度是否与文件的长度相同,如果不相同,则再次运行addScouts,如果为真,则结束。像这样:
相关问题 更多 >
编程相关推荐