상세 컨텐츠

본문 제목

[Python] mkdir과 makedirs의 차이점

머신러닝/함수, 라이브러리

by byoelcardi 2023. 7. 17. 21:06

본문

python의 운영체제와 관련된 라이브러리 os에 파일을 만드는 함수중 대표적인 것은 mkdirmakedirs가 있습니다. 두 함수에는 다음과 같은 특징이 있습니다.

  • os.mkdir(path)
    • 중첩된 디렉토리가 없는 경우에만 디렉토리를 생성합니다.
    • os.mkdir() 함수는 단일 디렉토리를 생성합니다.
    • 예를 들어, os.mkdir("new_directory")는 현재 작업 디렉토리에 "new_directory"라는 디렉토리를 생성합니다.
  • os.makedirs(path, exist_ok=False)
    • os.makedirs() 함수는 중첩된 디렉토리를 생성할 수 있습니다.
    • path 매개변수에는 생성할 디렉토리의 경로를 지정해야 합니다.
    • 중첩된 디렉토리가 없어도 하위 디렉토리를 모두 생성합니다.
    • exist_ok 매개변수는 디렉토리가 이미 존재하는 경우 오류 여부를 결정합니다. 기본값은 False이며, 디렉토리가 이미 존재하면 FileExistsError 예외가 발생합니다. exist_ok=True로 설정하면 이미 존재하는 디렉토리를 무시하고 오류 없이 진행됩니다.
    • 예를 들어, os.makedirs("parent/child/grandchild")는 현재 작업 디렉토리에 "parent" 디렉토리를 생성하고, 그 하위에 "child" 디렉토리를 생성하고, "child" 디렉토리의 하위에 "grandchild" 디렉토리를 생성합니다.

공통점

  • path 매개변수에는 생성할 디렉토리의 경로를 지정해야 합니다.
  • 경로는 상대 경로 또는 절대 경로 둘다 가능합니다.

정의 내용으로는 다음과 같이 정의할 수 있습니다만 제가 사용했을 때 가장 큰 차이점은 다음과 같았습니다.

folder_name = /data/2023/07/13

폴더명이 다음과 같이 "/data/2023/07/13일 때입니다. 여기서 2023 폴더나, 07과 같이 상위 폴더들이 존재하지 않고 /data 폴더만 있다고 가정해 보겠습니다.

해당 경우에는 makedirs()는 /2023/07/ 폴더까지 자동으로 만들어주고 mkdir()의 경우에는 permission denied가 발생했습니다. 즉 mkdir()의 경우에는 바로 상위폴더까지 만들어져 있어야 정상적으로 작동합니다.

관련글 더보기