Python file.read()方法

时间:2012-09-26 20:49:38

标签: python

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

3 个答案:

答案 0 :(得分:6)

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

for line in fileobj:
    process(line)

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


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

list_of_lines = fileobj.readlines()

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

答案 1 :(得分:1)

你可以使用..

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

使用'\n'检查其文档中的准确行为。

答案 2 :(得分:0)

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