我是靠谱客的博主 开朗电灯胆,最近开发中收集的这篇文章主要介绍python生成器读取大文本文件_使用python生成器处理大型文本文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我是新来的使用生成器,已经阅读了一些,但需要一些帮助处理大块文本文件。我知道已经讨论过这个主题,但是示例代码的解释非常有限,如果不理解发生了什么,就很难修改代码。

我的问题相当简单,我有一系列包含人类基因组测序数据的大型文本文件,格式如下:chr22 1 0

chr22 2 0

chr22 3 1

chr22 4 1

chr22 5 1

chr22 6 2

这些文件的长度在1Gb到20Gb之间,太大,无法读入RAM。所以我想一次读10000行的数据,这样我就可以对这些数据的最后一列进行计算。

基于这个链接here我写了以下内容:def read_large_file(file_object):

"""A generator function to read a large file lazily."""

bin_size=5000

start=0

end=start+bin_size

# Read a block from the file: data

while True:

data = file_object.readlines(end)

if not data:

break

start=start+bin_size

end=end+bin_size

yield data

def process_file(path):

try:

# Open a connection to the file

with open(path) as file_handler:

# Create a generator object for the file: gen_file

for block in read_large_file(file_handler):

print(block)

# process block

except (IOError, OSError):

print("Error opening / processing file")

return

if __name__ == '__main__':

path='C:/path_to/input.txt'

process_file(path)

在'process_block'中,我希望返回的'block'对象是一个10000个元素的列表,但它不是?第一个列表是843个元素。第二个是2394个元素?

我想拿回一个街区的N行数,但我对这里发生的事情感到很困惑?

这个解决方案here似乎有帮助,但我还是不明白如何修改它,使其一次读取N行?

这个here看起来也是一个非常好的解决方案,但是同样,没有足够的背景解释让我理解足够多的内容来修改代码。

有什么需要帮忙的吗?

最后

以上就是开朗电灯胆为你收集整理的python生成器读取大文本文件_使用python生成器处理大型文本文件的全部内容,希望文章能够帮你解决python生成器读取大文本文件_使用python生成器处理大型文本文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部