python单次读取n行数据到内存中

风林木火 发布于 05/29 11:17
阅读 1K+
收藏 0

学习python读取文件操作,发现没有合适的api可以一次读取文件中的n行到内存中,readline 和readlines 要么读取一行,要么全部读取,无法实现题目要求。当然两者都有一些读取n个字符的api但是这样读取的数据没有实际意义,不知道有没哪个大神知道怎么处理?为什么python和很多其他语言都没有类似的api

加载中
0
w
w8l8g8

是不是你理解题目的单次错了,即使读单行,底层也是一个字符逐个判断的,人家是不是让你封装一个方法

0
风林木火
风林木火

要实现的功能是,每次加载10行内容到内存代码中处理。

0
wei2011
wei2011

你都知道读取一行了,那读取n行有什么难度

infoworld
infoworld
回复 @风林木火 : 无论几次IO,要判断换行就得对每个字符进行判断,底层应该也是调用f.read(size)方法,你可以自己设定一个缓存大小,之后判断读出来的字符串是否带换行符,直到读到第5个换行符即可。其实没有必要,直接用readline5次效果也是一样的,它也是要判断。
风林木火
风林木火
:sweat:,一次I/O和10次I/O还是有区别的吧
0
冰霜之卅ya
冰霜之卅ya

当你使用 Python 内置的 open() 函数读取文本文件时,其默认行为是一次性将整个文件内容读取到内存中,并以字符串列表的形式返回。因此,如果你直接使用 readlines() 方法读取文件内容,可能会出现内存问题。

为了避免这种情况,你可以分批次读取文件内容,每次读取固定数量的行数据,处理完后再读取下一批数据。这样,可以控制读取的数据量,降低内存压力。另外,分批次读取文件内容的方式也更加适合处理大型文件,例如处理超过几十 GB 的日志文件等。

至于为什么不能直接读取10行,这是因为文本文件的行数是不确定的,而且每一行的长度也可能不同。如果你想要读取指定行数的数据,需要先进行一次全局读取,统计文件总行数或使用其他方法确定截取位置,然后通过切片操作读取指定行数的数据。

----GPT一下。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部