如何获得19GB文件的第二行-python?
一个文件中有超过1000万行,总文件大小为19GB,我只需要得到第二行 获取特定行可以通过循环完成:如何获得19GB文件的第二行-python?,python,file,search,size,bigdata,Python,File,Search,Size,Bigdata,一个文件中有超过1000万行,总文件大小为19GB,我只需要得到第二行 获取特定行可以通过循环完成: for i,j in enumerate(open('foobar.txt')): if i == 1: print j break 或者使用linecache(但不适用于大文件,因为它会将所有内容加载到RAM) 或者使用unix命令和os.popen: import os infile = 'foobar.txt' print os.popen('head -2 '+in
for i,j in enumerate(open('foobar.txt')):
if i == 1:
print j
break
或者使用linecache
(但不适用于大文件,因为它会将所有内容加载到RAM)
或者使用unix
命令和os.popen
:
import os
infile = 'foobar.txt'
print os.popen('head -2 '+infile+'|tail -1')
我正在探索更多的选择,以便只获得第二条线路
- 有没有办法读取到第二个
然后停止读取?(这样可以节省RAM空间)\n
- 有没有办法读取到1GB的文件,然后查找第二行?
- 在第二行之前还有什么其他阅读方法?
import itertools
n = 1
with open('foobar.txt') as f:
print next(itertools.islice(f, n, n+1))
它是否将所有19GB加载到RAM中?@alvas否,当您迭代一个文件对象时,该文件将被分块读取;换句话说,读取是缓冲的。感谢澄清=),这与我在第一个代码段中使用的正常迭代有什么不同吗?@alvas
islice
应该更快,因为它在C代码中计数,从而避免了Python中的if
。
import itertools
n = 1
with open('foobar.txt') as f:
print next(itertools.islice(f, n, n+1))