我正在学习python.如果有人可以解释以下处理文件之间的差异,是否可能:
file = open("file.txt")
for line in file:
#do something
file = open("file.txt")
contents = file.read()
for line in contents:
# do something
Run Code Online (Sandbox Code Playgroud)
我知道在第一种情况下,文件将作为一个列表,所以我们迭代一个文件,因为我们迭代列表的元素,但在第二种情况下,我不知道如何解释如果我读取文件会发生什么首先然后迭代它?
Ana*_*mar 18
在第一个中,您将逐行遍历文件.在这种情况下,整个文件数据不会被读入内存,而只会将当前行读入内存,这对于处理非常大的文件很有用.
在第二个中,file.read()将完整的文件数据作为字符串返回,当您对其进行迭代时,实际上是逐个字符地迭代文件的数据.这会将完整的文件数据读入内存.
显示此行为的示例 -
a.txt文件包含 -
Hello
Bye
Run Code Online (Sandbox Code Playgroud)
码
>>> 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
Run Code Online (Sandbox Code Playgroud)
khe*_*ood 11
第二种情况将文件的内容读入一个大字符串。如果你遍历一个字符串,你会依次得到每个字符。如果你想依次得到每一行,你可以这样做:
for line in contents.split('\n'):
# do something
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用readlines()代替将内容作为行列表读入read()。
with open('file.txt','r') as fin:
lines = fin.readlines()
for line in lines:
# do something
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19586 次 |
| 最近记录: |