概述
我是新来的使用生成器,已经阅读了一些,但需要一些帮助处理大块文本文件。我知道已经讨论过这个主题,但是示例代码的解释非常有限,如果不理解发生了什么,就很难修改代码。
我的问题相当简单,我有一系列包含人类基因组测序数据的大型文本文件,格式如下: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生成器处理大型文本文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复