Python에서 mkdir -p와 동일한 기능 구현하기
리눅스의 mkdir -p 명령어는 상위 디렉터리가 이미 존재하더라도 오류 없이 중첩된(재귀적인) 디렉터리를 한 번에 생성할 수 있게 해주는 옵션입니다. Python에서도 이와 동일한 기능을 간단하게 구현할 수 있습니다.
디렉터리를 재귀적으로 생성하려면 원하는 경로를 os.makedirs() 함수에 전달하면 됩니다. 이 함수는 지정된 경로에 필요한 모든 중간(상위) 디렉터리까지 자동으로 만들어 줍니다.
또한, 생성하려는 폴더가 이미 존재하는 경우에도 프로그램이 중단되지 않도록 하려면 exists_ok=True 옵션을 반드시 지정해야 합니다. 이 옵션이 없으면 대상 폴더가 이미 있을 때 FileExistsError 예외가 발생합니다.
>>> import os
>>> os.makedirs('my_folder/another/folder', exists_ok=True)
위 코드는 'my_folder'와 'another' 디렉터리가 존재하지 않으면 먼저 생성한 뒤, 그 안에 'folder' 디렉터리를 만듭니다. 해당 경로가 이미 존재하는 경우에도 아무런 오류 없이 조용히 통과하므로, 스크립트 실행 시 안전하게 사용할 수 있습니다.
추가 참고 사항
exists_ok매개변수는 Python 3.2 버전부터 지원됩니다.- Python 3.4 이상에서는 객체 지향 방식인
pathlib.Path('my_folder/another/folder').mkdir(parents=True, exist_ok=True)를 사용하는 것도 좋은 대안입니다. - 상위 디렉터리 생성 권한이 없거나 경로에 잘못된 문자가 포함된 경우에는 여전히
OSError가 발생할 수 있으므로, 필요하다면 예외 처리를 함께 고려하세요.