gpt4 book ai didi

python - 'in fp' 和 'in fp.readlines()' 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 22:29:57 27 4
gpt4 key购买 nike

for line in fpfor line in fp.readlines() 有什么区别?

with open(filename, 'r') as fp :
for line in fp.readlines() :

#AND

with open(filename, 'r') as fp :
for line in fp :

最佳答案

file.readlines() “[读取] 并[返回] 流中的行列表。” 所以您得到的是每一行的列表。因此,整个文件被读入内存,然后分成几行。

文档已经这样说了:

Note that it’s already possible to iterate on file objects using for line in file: ... without calling file.readlines().

因此,除非您确实需要将所有行作为列表获取,否则不要使用 readlines。而是直接遍历文件,因为 IOBase ,它是所有文件处理程序的基本类型,实现了迭代器协议(protocol):

IOBase (and its subclasses) supports the iterator protocol, meaning that an IOBase object can be iterated over yielding the lines in a stream. Lines are defined slightly differently depending on whether the stream is a binary stream (yielding bytes), or a text stream (yielding character strings). See readline() below.

使用迭代器协议(protocol)的好处是文件不会被完全读入内存。取而代之的是,文件流将被迭代地使用,并且一行接一行地给你,而不会将文件的所有其他内容都放在内存中。因此,即使对于非常大的文件,这也能很好地工作。

关于python - 'in fp' 和 'in fp.readlines()' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com