웹 개발 메모장

[파이썬] .txt 파일의 총 줄 수 구하기 (파일입출력 예제) 본문

옛날../파이썬

[파이썬] .txt 파일의 총 줄 수 구하기 (파일입출력 예제)

도로롱주 2017. 12. 11. 16:29




파일 입출력 및 enumerate 활용



문제) .txt파일을 읽어와서 해당 파일의 line 수를 구하는 프로그램은 만들어보자



해설)


예를들어 다음과 같은 .txt 파일이 있다고 하겠습니다.



우선 파일을 열고 닫아야 하니까 아래 처럼 코딩합니다.


1
2
3
4
5
6
7
myFile = open('practice.txt''r')
 
#
#
#
 
myFile.close()
cs



이제 ###에 들어갈 내용을 코딩하면 됩니다.


방법 1. read()

라인 수를 구한다는 이야기는 줄바꿈 문자('\n') 의 갯수를 구한다는 이야기와 같으므로


1
print(myFile.read().count("\n")+1)
cs


이렇게 파일 전체를 읽어 문자열로 저장하고 문자열 내의 '\n' 갯수+1 을 구하는 것도 방법이지만

비추입니다. 파일 크기가 어떨지도 모르고... 줄 바꿈 문자를 센다는게 완전한 로직이 아닌 것 같습니다..



방법 2. readLine()

아니면 readLine()을 통해 반복문을 활용해 읽어들일 값이 없을 때 까지 매번 count를 해주는 방법도 있습니다.


1
2
3
4
5
6
cnt = 0
while True:
    if myFile.readline()=='':
        break
    cnt += 1
print(cnt)
cs



방법 3. readLines()

readLines() 를 이용하면 보다 쉽게 구할 수 있습니다.

readLines() 는 줄 바꿈을 기준으로 매 줄을 각각 리스트의 요소로 하는 리스트를 반환해주기 때문에 반환되는 리스트의 길이를 구하면 그게 답이됩니다.


1
print(len(myFile.readlines()))
cs



방법 4. enumerate()

enumerate() 를 이용하면 파일 내용의 각각 line을 index와 연결되있는 데이터를 반환합니다.

그것을 리스트로 만들면, 즉 list(enumerate(myFile)) 은 다음과 같은 list를 반환합니다.



이를 활용해서 리스트 마지막 튜플의 첫번째 요소를 구해 +1을 해주면 답이 될 수 있습니다.


1
print(list(enumerate(myFile))[-1][0]+1)
cs


리스트의 길이를 구해도 되지만 방법3과 겹치므로 위 처럼 코딩해보았습니다.




Comments