遇到一个问题,题目是这样的:
随意写一个20行以上的文件
运行程序,先将内容读到内存中,
接收用户输入页码,每页5条,仅输出当页的内容
先贴出我的代码:
def func(page): #在函数中输入页码 lis = [] dic = {} with open('03name',encoding='utf-8') as f: for i in f: lis.append(i.strip()) #把文件中的每一行读取出来,去掉前后空格及换行符,放入列表 count = 0 while count < len(lis)/5 +1: #给出一个循环,限制条件是整数的页码+1 #这样不管最后一页有没有内容都放入字典中 dic.setdefault(count + 1,lis[0+count*5:5+count*5]) #切片把每一页的内容都放入字典 count += 1 return dic[page] print(func(6))
再给出答案的代码:
with open('03name',encoding='utf-8') as f: l = f.readlines() #直接读每行内容放进列表 page_input = int(input('输入您要查找的页码:')) page,mod = divmod(len(l),5) #除余来获取文件内容的整数页和剩余几行内容 if mod: page += 1 #有余数则页码+1 if page_input > page or page_input < 0: print('输入错误') elif page_input == page and mod != 0: #如果输入的是最后一页并且有余数 for i in range(mod): print(l[(page_input - 1) * 5 + i])#那么打印列表中的剩余行 else: for i in range(5): print(l[(page_input - 1)*5 + i])#这样取值,而不用切片不占用内存
很明显,答案表给出了另一种思路,并且这种思路只在内存中存储存放了一个包含文件内容的列,节省了空间
本文探讨了一种有效的文件内容分页显示方法,通过读取文件并按页展示内容,避免了大量数据一次性加载造成的资源浪费。文章对比了两种实现方式,一种是将所有内容加载到内存中再进行分页,另一种是按需读取,仅在内存中保留当前页数据,后者更节省内存。
2804

被折叠的 条评论
为什么被折叠?



