2013-01-16 3 views
3

가능한 복제를 사용하여 :
How to get line count cheaply in Python?카운트 라인 번호. 파이썬에게

을 내 작품에서 나는 어떤 파일을 열고 계산해야합니다. 점에서 선으로, 나는 그것이 잘 작동 된이

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

로했습니다. 이제 문제가 생겼어. 아니. 파일의 라인 (453)입니다,하지만 난 Last_Line를 인쇄하면 내가

print linecache.getline(File_Name, 350) 

을하려고하면 그것이 더 라인의 내용을 표시하는 경우에만 339을 보이고있다. 350.

모든 모드에서 파일을 열어 보았습니다. 파일에 문제가 있거나 논리에 문제가 있습니까? 도와주세요.

고마워요.

+1

"모든 모드"는 무엇을 의미합니까? 유니버설 라인 종료 모드를 시도 했습니까? –

+9

중복되지 않습니다. 그 사람은 "어떻게해야합니까?"라고 묻습니다.이 질문은 "내가하는 일에 무엇이 잘못 되었습니까?"라고 묻습니다. –

+0

@ IgnacioVazquez-Abrams이 모드로 시도해 보았습니다. 'r', 'rb', 'r +' – user19911303

답변

5

라인 엔딩이 혼합되어 있습니다. 귀하의 IDE는 Python이 유효하지는 않지만 이들 모두를 유효한 것으로 취급합니다. 보편적 인 newlines 플래그 "U"을 사용하여 파일을 열어 파이썬이 그것들을 모두 유효한 라인 엔딩으로 가져 오도록하십시오.

>>> 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'