파이썬 with 관련 질문이 있습니다.

안녕하세요.
며칠 전 책을 구매하여 처음 파이썬 공부를 시작한 직장인입니다.
게시판에 올리는 첫 질문글이네요. 앞으로 많이 질문드릴 것 같아, 먼저 감사하다는 말씀을 전합니다.

4-3장의 파일 입출력 관련 질문입니다.
책을 따라가며, 다음과 같은 소스코드를 작성했습니다.

f = open('temp','w')
for i in range(1,11):
    data = "%d line\n" %i
    f.write(data)
f.close()

g = open('temp','a')
for i in range(11,21):
    data = "%d line\n" %i
    g.write(data)
f.close()

with open('temp','a') as h:
    data = "auto close\n"
    h.write(data)

저는 1~20 line이 먼저 출력된 이후, 마지막에 auto close라는 출력이 나올 것으로 기대했습니다.
그러나, 파일은 1~10line, auto close, 11~20line 순으로 출력되었습니다.

맨 마지막에 작성된 with 구문이 중간의 파일 제어보다 우선 실행된 이유는 무엇인가요? (with에 우선순위가 있는 것인지요?)
감사합니다. :)

Leki 476

M 2020년 11월 3일 4:30 오후

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

g로 파일을 오픈하고 g.close()를 해야 하는데 f.close()를 하셔서 그런거 같네요.

박응용

2020년 11월 3일 4:31 오후

아.. 멍청한 휴먼에러였군요 ^^;; 답변 감사합니다! - Leki님, 2020년 11월 3일 4:35 오후 추천 , 대댓글
@Leki님 많이들 하는 실수입니다. ㅎㅎ - 박응용님, 2020년 11월 3일 4:38 오후 추천 , 대댓글