반응형
컨텍스트 매니저 함수를 다음과 같이 정의하고,
from contextlib import contextmanager
@contextmanager
def cwd(path):
oldpwd=os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(oldpwd)
다음과 같이 쓰면 된다.
print('current dir = `%s`'%(os.getcwd())
with cwd('./subdir'):
# 여기서 하고 싶은 일들을 한다.
# 예를 들면, 중간 출력 파일들을 파일명만으로 만든다던가.
# 특정 디렉토리에 있는 실행파일을 파일명만으로 실행한다던가.
print('current dir = `%s`'%(os.getcwd())
print('current dir = `%s`'%(os.getcwd())
with 컨텍스트 블록에 진입하면서, 프로그램의 현재디렉토리가 subdir
로 바뀌고, 그 안에서 하고 싶은 짓을 하면 된다. with 블록을 나가면, context manager 가 알아서 "자동으로", 원래의 디렉토리로 현재디렉토리를 바꾸어준다.
수동으로 원래 디렉토리로 chdir 해주는 방법도 있지만, 실수할 소지가 다분하기 때문에, 여러번 디렉토리를 옮겨다니며 작업하거나 하는 경우 유용한 팁이다.
728x90
'프로그래밍 > Python' 카테고리의 다른 글
아나콘다에서의 패키지 설치 (2) | 2020.01.22 |
---|---|
팩토리얼이 어떤 수로 나누어 떨어지는지 확인하기 (0) | 2019.12.24 |
[Python|LexRankr] 한국어 문서 요약 (4) | 2019.12.06 |
pip install 중에 , setup.py 에서 UnicodeDecodeError 'cp949' codec can't decode .... illegal multibyte sequence 가 발생하며 설치가 실패한다. (10) | 2019.11.18 |
[Flask] Pycharm Community 에서 Flask 프로젝트 실행/디버그 설정하기 (1) | 2019.11.14 |