2013-01-16 61 views
3

可能重複:
How to get line count cheaply in Python?計數行號。使用python

在我的工作,我需要打開一個文件,並沒有指望。在該行的,我想這個

Last_Line = len(open(File_Name).readlines())

這是工作的罰款。現在我有一個問題,實際沒有。該文件中的行是453,但如果我打印Last_Line它僅339顯示它顯示行的內容沒有,如果我嘗試

print linecache.getline(File_Name, 350) 

。 350.

我試過在所有模式下打開文件。 無論是與文件或與我的邏輯問題? 請幫忙。

謝謝

+1

「所有模式」是什麼意思?你有沒有嘗試通用線結束模式? –

+9

不重複。那個人問道「我該怎麼做?」,這個人問道:「我怎麼做?」。 –

+0

@ IgnacioVazquez-Abrams我試過用這些模式,'r','rb','r +' – user19911303

回答

5

你有混合行結束。您的IDE將它們視爲有效,而Python不是。使用通用換行標誌"U"打開文件,讓Python將它們全部視爲有效的行尾。

>>> f = open("file.txt", "w") 
>>> f.write("a\rb\nc\r\nd\n\re\n") 
>>> f.close() 
>>> open("file.txt").readlines() 
['a\rb\n', 'c\r\n', 'd\n', '\re\n'] 
>>> open("file.txt", 'rU').readlines() 
['a\n', 'b\n', 'c\n', '\n', 'd\n', '\n', 'e\n'] 

linecache的文檔似乎沒有指定它如何處理行尾。在經驗上,它使用通用換行符:

>>> for n in range(1, 8): 
... linecache.getline('file.txt', n) 
... 
'a\n' 
'b\n' 
'c\n' 
'\n' 
'd\n' 
'\n' 
'e\n'