프로그래밍/Python
[Python] with 컨텍스트를 이용해서 다른 디렉토리에서 작업하고 오기.
daewonyoon
2019. 12. 11. 19:39
반응형
컨텍스트 매니저 함수를 다음과 같이 정의하고,
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