今天我試圖學習和嘗試Python,並試圖打開一個文本文件,從它讀取行,然後在第二個文本文件中寫入這些行。之後,我嘗試將兩個文件中的行加載到列表中,並在控制檯中打印這些列表。下面是實驗代碼:Python:爲什麼我的循環在某個文本文件中讀取空行,雖然文件不是空的?
f = open('D:\\origFile.txt', 'r')
f2 = open('D:\\copyFile.txt', 'w')
for line in f:
f2.write(line.rstrip() + ' ')
f2.close()
s=""
for linez in f:
s += linez
print (s)
s2=""
f2 = open('D:\\copyFile.txt', 'r+')
reading = f2.readlines()
print (reading)
for linex in f2:
s2 += linex
print (linex)
list1=s.split()
list2=s2.split()
print(list1)
print(list2)
f.close()
f2.close()
的代碼按預期工作,只有當我刪除或評論這一部分:
f2 = open('D:\\copyFile.txt', 'w')
for line in f:
f2.write(line.rstrip() + ' ')
f2.close()
雖然我已經寫f1
的內容之後關閉f2
文件。那麼爲什麼它會影響代碼中其餘的文件操作呢?它又如何影響f1
?如在中,最後的列表既不是來自f1
也不是f2
的文本。
編輯1:在我的問題中,我已經試圖關閉第二個文件,認爲這將是我的問題的原因,而不是循環本身;而另一個問題甚至沒有回答我的問題的答案。儘管答案有些相同,但在另一個問題中的答案並未顯示如何重複使用文件的內容,而無需使用f.seek(0)
來重置迭代器,以便能夠像我上面的代碼一樣使用多個循環中的內容。
你做'了線F'右後'在F' linez,但你已經閱讀了f中的所有行。使用新的變量名稱不會倒帶文件。 – nsilent22
所以在Python中,循環不倒帶?在嘗試再次循環之前,我必須將指針倒回到文件的起始位置? – terasky
這不是指針。將它視爲一個流,從中將數據「喂」到你的「line」或「linez」變量中。如果你清空流,你將不會獲得更多數據。做'f.seek(0)'回捲到流的開頭。 – nsilent22