繁体   English   中英

如何在Python中阅读大文件的特定部分

[英]How to read specific part of large file in Python

给定一个大文件(数百MB),我如何使用Python快速读取文件中特定开始和结束索引之间的内容?

从本质上讲,我正在寻找一种更有效的方法:

open(filename).read()[start_index:end_index]

你可以seek到文件的文件,然后从那里阅读一定量。 Seek允许您获取文件中的特定偏移量,然后您可以将读取限制为仅该范围内的字节数。

with open(filename) as fin:
    fin.seek(start_index)
    data = fin.read(end_index - start_index)

这只会读取您正在寻找的数据。

这是我的可变宽度编码解决方案。 我的CSV文件包含一个字典,其中每一行都是一个新项目。

def get_stuff(filename, count, start_index):
    with open(filename, 'r') as infile:
             reader = csv.reader(infile)
             num = 0 
             for idx, row in enumerate(reader):
                 if idx >= start_index-1:
                     if num >= count:
                         return
                 else:
                     yield row 
                     num += 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM