티스토리 뷰

파일을 가지고 어떤 작업을 할 때 open() 을 통해 파일을 열고 나면 반드시 close() 를 통해 닫아야 한다고 설명드렸습니다. close() 를 항상 잊지 말아야 한다는 부담을 드렸는데요. 이번 단원에서 그 부담을 해소해드리겠습니다.

 

파이썬에서는 with 란 것이 있는데, 이를 이용하면 파일을 열고 나서 close() 를 호출하지 않아도 자동으로 닫아주는 역할을 해줍니다. 아래와 같은 형태로 생겼는데요. 

with 작업 as 변수명:
    실행 명령문1
    실행 명령문2
    ...

with 뒤에 따라오는 작업이 바로 파일을 여는 open() 함수가 들어가는 부분입니다. open() 을 통해 열린 파일은 as 뒤에 있는 변수명으로 접근할 수 있게 되구요. if, for, while, def 와 같이 문장 끝에 콜론(:) 을 붙여주고, with 구문 내에서 실행할 명령문들은 반드시 들여쓰기를 해주셔야 합니다. 그리고 with 구문을 벗어나면 변수명은 사용할 수가 없게 되지요.

 

pickle 을 통해 파일 내 데이터를 불러오는 작업을 with 를 통해서 구현해보겠습니다.

모듈 사용을 위해 import 를 먼저 해준 다음에 with 구문을 씁니다. "profile.pickle" 파일을 바이너리 읽기 모드인 "rb" 로 열어서 profile_file 이라는 변수명으로 지정합니다. 그러면 with 구문 내에서는 profile_file 이름을 통해서 파일에 접근이 가능해지지요. pickle 모듈의 load() 함수를 통해서 이 파일을 열고 내용을 출력합니다.

import pickle

with open("profile.pickle", "rb") as profile_file:
    print(pickle.load(profile_file))

실행해보니 익숙한 데이터를 확인할 수 있네요.

{'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}

 

 

이번에는 새로운 파일을 하나 만들어볼게요. study.txt 라는 텍스트 파일을 쓰기 모드인 "w" 로 열고 encoding 은 "utf8" 로 지정합니다. 그리고 이렇게 만든 파일은 study_file 이라는 이름의 변수명으로 지정하고, 다음 줄에서 파일에 내용을 쓰는 write() 함수를 통해서 내용을 작성합니다.

with open("study.txt", "w", encoding="utf8") as study_file:
    study_file.write("파이썬을 열심히 공부하고 있어요")

 

실행하면 study.txt 파일이 생성될텐데, 이렇게 만든 파일을 with 를 통해서 읽어보겠습니다. 동일한 파일 이름을 이번에는 읽기 모드인 "r" 로 열고 encoding 은 역시 "utf8" 로 지정합니다. 파일을 쓸 때와 같은 이름인 study_file 로 지정하고, read() 함수를 통해서 모든 내용을 불러와서 출력합니다.

with open("study.txt", "r", encoding="utf8") as study_file:
    print(study_file.read())

실행해보면 앞에서 write() 함수를 통해 작성한 내용이 그대로 출력되는 것을 보실 수 있습니다.

파이썬을 열심히 공부하고 있어요

 

with 를 사용하면 파일을 읽고 쓰는 코드도 간결해지며, 매번 close() 함수를 호출해야 하는 부담도 줄어들기 때문에 보다 수월하게 파일 관련 작업을 할 수 있습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함