파이썬 readline()함수가 반환하는 None 을 이용한 코드 질문

kdyapple98의 이미지

f = open("C:/newfile.txt", 'r') // newfile 안은 비었다고 할때(아무 문장이 없다고 할때)

line = f.readline()// 아무내용이 없을테니 None 을 반환할꺼라는게 제 생각입니다.

while True:
if line == None: break // 여기가 문제의 코드입니다. not line 을 하면 제대로 나오더군요

print(line)
line = f.readline()

f.close()

결과는 무한 None 출력입니다.

세번째 주석줄에 코드가 문젠데
인터프리터로 몇가지 확인을 해봤지만 readline()이 None을 반환하는게 맞다면 무한 None 출력은 아닐텐데
혹시 readline()이 더이상 반환할 내용이 없을때 None을 반환한다는게 틀린걸까요?
None 을 반환하는게 맞다면 위 코드에서 문제점은 무엇인가요?

익명 사용자의 이미지

빈 파일에 대한 file.readline()은 빈 문자열을 반환합니다.

>>> import tempfile
>>> f = tempfile.TemporaryFile('r')
>>> f.readline()
''
익명 사용자의 이미지

그리고, 줄 단위 파일 처리는 for 문을 사용하여 더 간략하게 표현할 수 있습니다.

# python3
with open("C:/newfile.txt", 'r') as f:
    for line in f:
        print(line, end='')
kdyapple98의 이미지

궁금증이 해결됬네요

for문을 이용하여 저렇게 처리할 수 있네요. 배워갑니다 감사합니다 :)