当前位置: 首页 > 面试题库 >

Python中读取大文件的简单方法?

雍骏俊
2023-03-14
问题内容

我有一个很大的文件4GB,当我尝试读取它时,我的计算机挂起了。因此,我想逐个读取它,并且在处理完每个块之后,将已处理的块存储到另一个文件中并读取下一个块。

yield这些零件有什么方法吗?

我很想有一个简单的方法。


问题答案:

要编写一个简单函数,只需使用yield

def read_in_chunks(file_object, chunk_size=1024):
    """Lazy function (generator) to read a file piece by piece.
    Default chunk size: 1k."""
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data


with open('really_big_file.dat') as f:
    for piece in read_in_chunks(f):
        process_data(piece)

另一个选择是使用iter和辅助功能:

f = open('really_big_file.dat')
def read1k():
    return f.read(1024)

for piece in iter(read1k, ''):
    process_data(piece)

如果文件是基于行的,则文件对象已经是行的惰性生成器:

for line in open('really_big_file.dat'):
    process_data(line)


 类似资料:
  • 本文向大家介绍python简单读取大文件的方法,包括了python简单读取大文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python简单读取大文件的方法。分享给大家供大家参考,具体如下: Python读取大文件(GB级别)采用的办法很简单: 例如: 一切都交给python解释器处理,读取效率很高,且占用资源少。 stackoverflow参考链接:How to read la

  • 本文向大家介绍Python按行读取文件的简单实现方法,包括了Python按行读取文件的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 1:readline() 一行一行得从文件读数据,显然比较慢; 不过很省内存; 测试读10M的sample.txt文件,每秒大约读32000行; 2:fileinput 写法简单一些,不过测试以后发现每秒只能读13000行数据,效率比上一种方法慢了两倍多; 3

  • 问题内容: 在Ruby中,您可以使用读取文件。我在Python中知道的最短和最清晰的是 还有其他方法可以使它更短(最好是一行)并且更具可读性吗? 注意:最初,我将问题表述为“在一行代码中执行此操作”。正如S.Lott所指出的,更短并不一定意味着更具可读性。因此,我改写我的问题只是为了阐明我的意思。我认为Ruby代码更好,更易读,这不一定是因为它是一行还是两行(尽管也很重要),还因为它是一个类方法,

  • 问题内容: 我有一些代码可以读取名称文件并创建列表: 每个名称用换行符分隔,如下所示: 我想忽略仅包含空格的任何行。我知道我可以通过以下方式来实现:创建一个循环并检查读取的每一行,然后将其添加到列表(如果不是空白的话)。 我只是想知道是否还有更Pythonic的方法? 问题答案: 我将堆栈生成器表达式: 现在,是所有非空白行。这将使您不必在线路上两次打电话。如果需要行列表,则可以执行以下操作: 您

  • 需要解析一个PDF文件,以便只提取最初的文本行,并寻找不同的Python包来完成这项工作,但没有任何运气。 尝试过: tika,它给出了不同的终端错误消息,并且非常慢 pdftotext安装失败 pdf2text在“导入pdf2text”时失败,并且当更改为“pdftotext”时,即使通过显示安装了“extractor”,也无法使用“importerror:无法导入名称'extractor'”导

  • 本文向大家介绍Python按行读取文件的实现方法【小文件和大文件读取】,包括了Python按行读取文件的实现方法【小文件和大文件读取】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python按行读取文件的实现方法。分享给大家供大家参考,具体如下: 小文件: 大文件: 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操