파이썬 처음 시작하는데 type()을 하고 나면 print()가 제대로 안됩니다.

조회수 485회

이미지

중간에 type()을 한번 하고 나면 마지막 print(diary)에 값이 나오지 않습니다.

f.seek(0)을 해봐도 결과는 똑같이 나옵니다.

왜 이렇게 되는지 궁금합니다.

감사합니다.

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    파일의 read() 메서드는 인수로 아무것도 지정해 주지 않으면 파일 내의 모든 텍스트를 다 읽어와서 문자열로 반환합니다.

    type(f.read())에서 내부의 f.read()가 모든 텍스트를 문자열로 가져왔고, 그것(문자열)을 type()에 넣었기 때문에 <class 'str'>가 출력된 것입니다.

    그 이후에 diary = f.read()를 다시 실행하였지만, 이미 앞에서 파일의 텍스트를 모두 읽어 왔으므로 더 읽어 올수가 없습니다. 따라서 f.read()는 빈 문자열 ''을 반환하고, print(diary)는 빈문자열을 출력하여 화면에 흰색 빈줄 하나가 출력된 것입니다.

    그리고 f.seek(0)을 사용할 경우에는 아래처럼 다시 f.read()하기 전에 사용해야 합니다.

    f=open('a.txt','r')
    type(f.read())
    f.seek(0)
    diary=f.read()
    print(diary)
    

    -결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 헐 됐습니다!! 진짜 감사합니다!! Chan820216 2021.1.24 10:13

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)