如何获得19GB文件的第二行 - python?

时间:2013-09-24 10:24:21

标签: python file search size bigdata

文件中有> 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表示某人较小且文件大小为>>>。

1 个答案:

答案 0 :(得分:3)

您可以像itertools.islice这样执行相同操作:

import itertools
n = 1
with open('foobar.txt') as f:
    print next(itertools.islice(f, n, n+1))