티스토리 뷰
파일을 가지고 어떤 작업을 할 때 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() 함수를 호출해야 하는 부담도 줄어들기 때문에 보다 수월하게 파일 관련 작업을 할 수 있습니다.
'파이썬 강의 > 기본편' 카테고리의 다른 글
[파이썬 기본편] 9-1.클래스 (4) | 2021.03.06 |
---|---|
[파이썬 기본편] 8-6.퀴즈 #7 (10) | 2021.03.05 |
[파이썬 기본편] 8-4.pickle (2) | 2021.03.03 |
[파이썬 기본편] 8-3.파일입출력 (7) | 2021.03.02 |
[파이썬 기본편] 8-2.다양한 출력포맷 (1) | 2021.03.01 |
- Total
- Today
- Yesterday
- ChatGPT
- Coding
- Xcode
- c언어
- 나도코딩
- onlineclass
- Visual Studio Code
- 파이썬
- 행맨
- repl.it
- Tkinter
- 아나콘다
- 비주얼 스튜디오 코드
- Mac
- 파이게임
- pygame
- coloso
- GUI
- Unity
- pycharm
- 환경설정
- game
- vscode
- Colab
- 코랩
- 챗GPT
- 주피터노트북
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |