1

一个文件中有超过 1000 万行,总文件大小为 19GB,我只需要获取第二行。

可以通过循环来获得特定的行:

for i,j in enumerate(open('foobar.txt')):
  if i == 1:
    print j
    break

或使用linecache(但不适用于大文件,因为它将所有内容加载到 RAM 中)

import linecache
print linecache.getline(open('foobar.txt'),2)

或使用unix命令和os.popen

import os
infile = 'foobar.txt'
print os.popen('head -2 '+infile+'|tail -1')

我正在探索更多选择以仅获得第二行。

  • 有没有办法读到第二次\n然后停止阅读?(这样可以节省 RAM 空间)
  • 有没有办法读取到 1GB 的文件然后寻找第二行?
  • 直到第二行还有什么其他的阅读方式?

我假设这个问题是可扩展的,因为第 x 行中的 x 表示某人很小并且文件的大小是 >>>。

4

1 回答 1

3

你可以这样做itertools.islice

import itertools
n = 1
with open('foobar.txt') as f:
    print next(itertools.islice(f, n, n+1))
于 2013-09-24T10:34:58.927 回答