`mkdir -p`구현하기

쉘에서 mkdir -p하는 것과 같은 기능을 만들어야 합니다. system call 말고 다른 방법으로 만들 수 있을까요요? 20줄 내외 정도로 짧은 코드였으면 합니다.

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    파이썬 버전에 따라서 코드가 다릅니다.

    파이썬 2.5이상

    import os, errno
    
    def mkdir_p(path):
        try:
            os.makedirs(path)
        except OSError as exc: #Python > 2.5
            if exc.errno == errno.EEXIST and os.path.isdir(path):
                pass
            else : raise
    

    파이썬 3.2이상

    파이썬 3.2 이상에서는 os.makedirs의 3번째 인자 exist_ok가 추가되었습니다. exist_ok = True인 경우 mkdir -p 와 같은 기능을 합니다. 단, 기존 디렉토리에 mode로 접근이 불가능한 경우에는 OSError가 발생합니다.

    import os, errno
    
    def mkdir_p(path):
        try:
            os.makedirs(path, exist_ok=True) #python >= 3.2
        except OSError as exc: #Python > 2.5
            raise #기존 디렉토리에 접근이 불가능 한 경우
    

    파이썬 버전에 따른 document를 보시려면 다음 링크를 클릭하세요

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.