안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with를 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 8_with.py를 생성하고 코드를 실행합니다.

 

Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with

with 구문을 사용하면 try/finally 에서 코드를 단순화 시킬 수 있고 항상, 클린업 작업을 자동 실행합니다.

 

설명만으로는 감이 잘 안오실겁니다. 하지만 코드를 살펴보면 금방 이해하실거에요. 

이미 몇번, 이전 강좌의 포스트에서 with 구문을 쓰는 것을 보여드렸습니다. 파일 입출력과 관련된 부분이었는데요. 

 

Python에서 with 를 사용하는 이유

SQLER의 이전 포스트에서 보신 것처럼, 파일 스트림 작업을 할때, 보통 이런 패턴으로 작업합니다.

파일을 쓰기 위해 열고, 쓰기 작업 후, 스트림을 close해서 완료하는 절차입니다.

stream = open('output.txt', 'wt')
stream.write('Lorem ipsum dolar')
stream.close() # 꼭 close를 해야 합니다.

만약 정상적으로 close 되지 않으면, 다음에 파일을 열때, 파일이 이미 열려 있다는 메세지가 뜨고 적절한 처리를 해야 합니다.

 

try / finally 작업

이런 경우를 대비해 try / finally 패턴 작업이 필요합니다.

try:
    stream = open('output.txt', 'wt')
    stream.write('Lorem ipsum dolar')
finally:
    stream.close() # 정상/오류 상황 양쪽 모두, finally block을 통해 close 해야 합니다.

 

이런 경우에, with 구문이 유용합니다. 위의 코드를 이런식으로, with 구문으로 변경할 수 있습니다.

 

with로 변경한 과정

with open('output.txt', 'wt') as stream:
    stream.write('Lorem ipsum dolar')

 

이렇게 file stream 작업이나 다른 네트워크 stream 작업 등의 외부 리소스 관련 작업을 할때, with를 이용하면 코드를 더 간결하게 유지하면서 같은 작업을 할 수 있습니다.

 

도움 되시길 바랍니다.

 

참고자료

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

c9-python-getting-started/more-python-for-beginners/08 - Managing external resources at master · CloudBreadPaPa/c9-python-getting-started (github.com)

 

No. Subject Author Date Views
Notice [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 113
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 24
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 1068
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 522
» Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 259
101 Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 829
100 Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 358
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 228
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 145
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 185
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 240
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 393
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 405
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 138
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 426
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 471
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 138
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 136
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 159
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 118
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 144
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 134
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 150





XE Login

테스트 팝업
Close