我见过这两种处理文件的方法:
file = open("file.txt")
for line in file:
#do something
file = open("file.txt")
contents = file.read()
for line in contents:
# do something
我知道在第一种情况下,文件将像一个列表一样,所以for
循环遍历文件,就像它是一个列表一样。在第二种情况下到底发生了什么,我们读取文件然后迭代contents
?采取每种方法的后果是什么?我应该如何在它们之间进行选择?
在第一个中,您将逐行迭代文件。在这种情况下,整个文件数据不会一次性读入内存;相反,仅将当前行读入内存。这对于处理非常大的文件很有用,并且在您不知道文件是否会很大时也有利于鲁棒性。
在第二个中,file.read()
以字符串形式返回完整的文件数据。当您对其进行迭代时,您实际上是在逐个字符地迭代文件的数据。这会将完整的文件数据读取到内存中。
下面是一个展示此行为的示例。
a.txt
文件包含
Hello
Bye
Code:
>>> f = open('a.txt','r')
>>> for l in f:
... print(l)
...
Hello
Bye
>>> f = open('a.txt','r')
>>> r = f.read()
>>> print(repr(r))
'Hello\nBye'
>>> for c in r:
... print(c)
...
H
e
l
l
o
B
y
e
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)