파일을 읽을 때( readline() )와 관련한 질문입니다.

'점프 투 파이썬-4-3 파일을 읽고 쓰기' 에서
프로그램의 외부에 저장된 파일을 읽을 때

f = open("C:/doit/새파일.txt", 'r')
while True:
    line = f.readline()
    if not line: break
    print(line)
f.close()

이렇게 하면 된다고 하셨습니다.(첫번째 방법이라고 지칭하겠습니다)

근데 여기서 궁금증이 생겼습니다.
line = f.readline()과 같이 변수 저장을 꼭 해줘야 하는걸까?
그래서 변수 저장 없이

f = open("C:/doit/새파일.txt", 'r')
while True:
    if not f.readline(): break
    print(f.readline())
f.close()

이렇게 코드를 짜 실행해보았습니다.(두번째 방법이라고 지칭하겠습니다)

여기서 제가 임의로 설정한 "새파일.txt"는 아래와 같습니다.

1111
2222
3333

첫번째 방법으로 실행하면

1111

2222

3333

이 출력되고

두번째 방법으로 실행하면

2222
#빈 줄
#빈 줄

이 출력됩니다. (#빈 줄은 빈 줄이 출력된다는 의미입니다.)

왜 이런 결과가 나타나는 걸까요?
왜 변수에 저장해야 의도한 대로 결과가 나오는지 알고싶습니다.

54

2022년 1월 12일 2:57 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

변수에 저장하는 것과 상관없이

f.readline() 을 호출하는 횟수와 상관이 있습니다. 새로 작성하신 코드를 보면 readline이 루프내에서 두번 호출됩니다.

박응용

2022년 1월 12일 4:03 오후

감사합니다~! - 님, 2022년 1월 15일 4:31 오후 추천 , 대댓글