相关疑难解决方法(0)

68
推荐指数
6
解决办法
14万
查看次数

Python最快访问文件中的行

我在一个文件中有一个ASCII表,我想从中读取一组特定的行(例如,行4003到4005).问题是这个文件可能非常长(例如,数千到数百万行),我想尽快做到这一点.

糟糕的解决方案:读入整个文件,然后转到这些行,

f = open('filename')
lines = f.readlines()[4003:4005]
Run Code Online (Sandbox Code Playgroud)

更好的解决方案:enumerate在每条线路上,以便它不在内存中(la /sf/answers/145731631/)

f = open('filename')
lines = []
for i, line in enumerate(f):
    if i >= 4003 and i <= 4005: lines.append(line)
    if i > 4005: break                                    # @Wooble
Run Code Online (Sandbox Code Playgroud)

最佳方案?

但这仍然需要通过每一行.是否有更好的(在速度/效率方面)访问特定线路的方法?即使我只访问文件一次(通常),我应该使用linecache吗?

使用二进制文件,在这种情况下可能更容易跳过,是一个选项---但我宁愿避免它.

python io performance file

16
推荐指数
2
解决办法
8682
查看次数

标签 统计

python ×2

character ×1

file ×1

file-io ×1

io ×1

performance ×1