python一次性读取整个文件-python-文件中的行是否读取整个文件

您不能确定.您所知道的只是它一次将返回一行. Python Standard Library documentation说:

为了使for循环成为遍历文件行的最有效方法(一种非常常见的操作),next()方法使用了隐藏的预读缓冲区.使用预读缓冲区的结果是,将next()与其他文件方法(如readline())结合使用是不正确的.

我的理解是,预读缓冲区加载了整个块(大小不确定),并在该缓冲区中查找行尾.但是对于一个小文件(很少),您可以确定只会进行一次物理读取.我曾经试图在一个小文件(大约50行)中获得下一行的第一行后进行读取,并在文件末尾找到了文件指针.

当然,对于一个非常大的文件,它将一次被读取一个物理块,而python内存将一次只使用一行.因此它将比readlines()更保守.但是毕竟,在常见系统(如Unix,Mac OS或Windows)上,对文件(*)的基础读取系统调用没有行尾的概念,并且只能读取(最大)字节数.因此,无论使用哪种语言,这些系统都无法实际读到行尾.您只能具有加载内部缓冲区然后在该缓冲区中查找行尾的实用程序.这就是next()方法对Python中的文件对象所做的工作.

在您发表评论后,我了解到您尝试仅获得第一行.您可以使用:

line = f.next()

但是之后不要尝试使用任何读取方法,因为如上所述,文件指针可能远远超出第一行的末尾.

(*)从控制台或终端设备读取时会有所不同…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值