[英]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.