您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python最快访问文件中的行

Python最快访问文件中的行

我可能只会使用itertools.islice。在像文件句柄这样的可迭代对象上使用islice意味着永远不会将整个文件读入内存,并且尽可能快地丢弃前4002行。您甚至可以非常便宜地将所需的两行转换为列表(假设这两行本身不太长)。然后,您可以退出with块,关闭文件句柄。

from itertools import islice
with open('afile') as f:
    lines = list(islice(f, 4003, 4005))
do_something_with(lines)

但是,圣牛的行缓存速度更快,可以进行多次访问。我创建了一个百万行的文件来比较islice和linecache,然后将其删除

>>> timeit("x=islice(open('afile'), 4003, 4005); print next(x) + next(x)", 'from itertools import islice', number=1)
4003
4004

0.00028586387634277344
>>> timeit("print getline('afile', 4003) + getline('afile', 4004)", 'from linecache import getline', number=1)
4002
4003

2.193450927734375e-05

>>> timeit("getline('afile', 4003) + getline('afile', 4004)", 'from linecache import getline', number=10**5)
0.14125394821166992
>>> timeit("''.join(islice(open('afile'), 4003, 4005))", 'from itertools import islice', number=10**5)
14.732316970825195
python 2022/1/1 18:31:28 有223人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶