在Python中处理大文本文件

jdb*_*org 1 python

基础是我需要每行处理4gig文本文件.

使用.readline()或f中的行很适合内存,但需要很长时间才能使用IO.想使用像yield这样的东西,但是(我认为)会切断线条.

可能的答案:

file.readlines([sizehint])¶
Run Code Online (Sandbox Code Playgroud)
Read until EOF using readline() and return a list containing the lines
Run Code Online (Sandbox Code Playgroud)

因此阅读.如果存在可选的sizehint参数,则不会读取到EOF,而是读取总计近似sizehint字节的整行(可能在四舍五入到内部缓冲区大小之后).如果无法实现或无法有效实现,则实现类文件接口的对象可以选择忽略sizehint.

没意识到你能做到这一点!

Sve*_*ach 7

您可以迭代文件对象:

with open("filename") as f:
    for line in f:
        whatever
Run Code Online (Sandbox Code Playgroud)

这将进行一些内部缓冲以提高性能.(注意,它file.readline()会执行得更糟,因为它不会缓冲 - 这就是为什么你不能在文件对象上混合迭代的原因file.readline().)