Python file.read() method



我正在使用Python逐行读取文本文件。 每行的长度可变。 第一行可以是 10 个字符,下一行可以是 100 个字符;没有办法说。 目前,我为每一行发出一个file.readline()方法,对其进行处理,然后将其保存到数据库中。 此方法保证了我一整行输入。 但是,我想更快地做到这一点。 有没有办法使用 Python file.read() 方法进行批量读取,以便当缓冲区在一行中间停止时,我可以保证行尾读取字符? 处理这个问题的最佳方法是什么?

处理这些问题的典型方法只是:

for line in fileobj:
    process(line)

无法实际指定read在行尾结束。 你可以用fileobj.seek做一些笨拙的事情. 基本上,你会读取 N 个字节,找到返回字符串中的最后一个换行符(使用 string.rfind ),你可以向后寻找那么多字节。


当然,如果你有足够的内存,你可以一次读取整个文件:

list_of_lines = fileobj.readlines()

但是,我真的不相信您会在这里看到任何明显的加速。 您确定在需要之前没有进行优化吗?

你可以使用 ..

lines = file_handle.read().split('n')
# Or 
lines = file_handle.readlines()

检查他们的文档以了解'n'的准确行为。

我弄乱的编码器这样做的方式是读取那里的任何内容或特定的块大小,记下最后一个换行符的位置(.rfind('')),处理数据直到该换行符,然后从换行符存储到块的末尾列表。 读取下一个块时,您从之前停止读取的相同位置读取,并将之前剩余的字符串附加到该块上。 性能合理,而且很稳定,当然这是针对网络套接字的,你不能向后寻找,我不确定哪种方法实际上在文件上表现更好。

最新更新