2014-12-03 28 views
0
file=open('in.txt','r') 
print((file.readlines()).pop(20)[:-1]) 
for line in file: 
    print(line[:-1]) 

我有這個程序,當我運行它時,它顯示我的文件的第21行,就是這樣。我不知道它的技術術語,但每當我使用'.read()'或'readline()'或'readlines()'然後嘗試從文件直接讀取時,它永遠不會工作,爲什麼?這是怎麼回事?我沒有收到錯誤代碼,它只是沒有顯示'for'循環的任何內容。Python不讀文件行

回答

2

你打開此文件:

file=open('in.txt','r') # note r is default, you don't need it explicitly. 

當你調用file.readlines你用盡你的文件處理程序:

print((file.readlines()).pop(20)[:-1]) 

然後,當您嘗試再次遍歷該文件時,它位於該文件的末尾,沒有。

你也忘了在最後關閉你的文件。 我建議你使用上下文管理器,它採用自動關閉文件的護理,只有通過文件去一次:

with open('in.txt', 'rU') as file: 
    file_lines = file.readlines() 

然後請參閱列表中的文件行。

請注意,我使用rU標誌,它使用Universal Newlines模式。這將覆蓋你跨平臺,因爲OS X,Windows和Linux都有不同的換行符。和

,而不是這樣做:

for line in file: 
    line[:-1] 

您可以通過處理與line.rstrip()線將刪除右邊的空格剝離換行。

+0

只需確保.rstrip()也可以刪除新的命令行?因爲這就是我要去掉的東西,不一定是空白。另外,你能否進一步解釋rU是什麼?你說這是一個Universal Newlines模式,但我認爲它只是告訴python你正在閱讀這個文件。 – malabeh 2014-12-03 05:15:00

1

你需要 「重置」 文件迭代器:

file.seek(0) 
for line in file: 
    print(line[:-1]) 
+0

完美!謝謝! – malabeh 2014-12-03 05:12:17