簡體   English   中英

迭代文件python中的行

[英]Iterating over lines in a file python

我正在學習蟒蛇。 如果有人可以解釋以下處理文件的不同之處,是否有可能:

file = open("file.txt")
for line in file:
    #do something

file = open("file.txt")
contents = file.read()
for line in contents:
    # do something

我知道在第一種情況下,該文件將充當一個列表,因此我們在迭代列表元素時迭代一個文件,但在第二種情況下,我不確定如何解釋讀取文件時會發生什么首先,然后迭代它?

在第一個中,您正在逐行迭代文件。 在這種情況下,整個文件數據不會一次讀入內存; 相反,只有當前行被讀入內存。 這對於處理非常大的文件很有用,並且如果您不知道文件是否會很大,則有利於穩健性。

在第二個中, file.read()以字符串形式返回完整的文件數據。 當您迭代它時,您實際上是在逐個字符地迭代文件的數據。 這會將完整的文件數據讀入內存。

這是顯示此行為的示例。

a.txt文件包含

Hello
Bye

代碼:

>>> 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

第二種情況將文件的內容讀入一個大字符串。 如果你遍歷一個字符串,你會依次得到每個字符。 如果你想依次得到每一行,你可以這樣做:

for line in contents.split('\n'):
     # do something

或者,您可以使用readlines()而不是read()將內容作為行列表read()

with open('file.txt','r') as fin:
    lines = fin.readlines()
for line in lines:
    # do something

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM