파이썬 & 오픈소스 개발 Tip과 강좌

이곳은 파이썬과 여러 오픈소스 기반 프레임워크 관련 Tip과 강좌 게시판 입니다. 관련 개발을 진행하면서 알아내신 Tip이나 강좌와 새로운 소식을 적어 주시면 다른 공부하는 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

안녕하세요. 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 Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 305
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 145
» Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 71
101 Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 95
100 Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 81
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 73
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 23
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 37
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 46
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 61
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 32
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 28
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 61
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 51
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 35
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 27
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 25
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 26
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 33
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 25
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 39





XE Login