簡體   English   中英

Python .txt文件迭代和readlines()

[英]Python .txt file iteration and readlines()

我在逐行讀取文件,將其分配給變量並將其余代碼應用到該變量上有些困惑。 我的代碼正是在做它需要做的事情,只是停留在遍歷文件上。 嘗試時出現“混合迭代,讀取方法將丟失數據”錯誤:

for line in file:
    user_input = file.readlines()

這樣做,我只能讀取最后一行:

for line in user:
    user_input = line

那么我要如何去讀取文件中的每一行? 我覺得這將是一個重復的問題,但是我不確定該如何處理。

如果要逐行迭代,請執行以下操作:

for line in file:
    do_something_with(line)

您的第二個版本不起作用,因為您要做的就是一遍又一遍地將本地變量user_input重新分配給每一行,因此最后,您只有最后一個。

您實際上需要對循環中的那一行進行某些操作 這是否意味着要處理它並編寫一些輸出,還是將其添加到列表,字典或其他集合中供以后使用,取決於您要執行的操作。

例如,如果要構建文件中所有單詞的集合,則可以執行以下操作:

words = set()
for line in file:
    words |= set(line.split())

另一方面,如果您想一次讀取整個文件以獲取所有行的列表,請執行以下操作:

lines = file.readline()

… 或這個:

lines = list(file)

如果您需要多次遍歷線路,或以任意順序訪問它們,這將非常有用。

如果不是這樣,則無論您想對lines做什么,都可能直接對file ,因此您在浪費時間和內存來建立該列表。


您的代碼將兩者混合在一起:

for line in file:
    user_input = file.readline()

換句話說,對於文件中的每一行,您都試圖讀取整個文件。 這沒有任何意義。 要么對每一行做一些事情,要么只讀取一次整個文件。

暫無
暫無

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

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