makedirs do tworzenia głębokich katalogów hierarchicznych rekurencyjnie w Pythonie

Biznes

Błąd podczas tworzenia nowego katalogu za pomocą os.mkdir() w nieistniejącym katalogu

os.mkdir()Jest to metoda używana do tworzenia katalogu (folderu) w Pythonie. Jeśli spróbujesz utworzyć nowy katalog w nieistniejącym katalogu, pojawi się błąd.(FileNotFoundError)

import os

os.mkdir('not_exist_dir/new_dir')
# FileNotFoundError

Twórz katalogi rekursywnie za pomocą os.madeirs()

Jeśli użyjesz os.makedirs() zamiast os.mkdir(), utworzy on katalog pośredni, więc możesz rekursywnie tworzyć głębokie katalogi hierarchiczne.

os.makedirs('not_exist_dir/new_dir')

W przypadku tego przykładu, utworzy je wszystkie naraz. Jest OK, jeśli istnieje wiele nowych katalogów pośrednich.

  • katalog pośredni: not_exist_dir
  • katalog końcowy: new_dir

Jednakże, jeśli katalog końcowy już istnieje, pojawi się błąd.(FileExistsError)

os.makedirs('exist_dir/exist_dir')
# FileExistsError

Jeśli istnieje argument exist_ok

Od Pythona 3.2 dodano argument exist_ok, i jeśli exist_ok=True, to nie wystąpi błąd, nawet jeśli katalog końcowy już istnieje. Jeśli katalog końcowy nie istnieje, to zostanie utworzony nowy, a jeśli istnieje, to nic nie zostanie zrobione. Jest to wygodne, gdyż nie trzeba z góry sprawdzać istnienia katalogu końcowego.

os.makedirs('exist_dir/exist_dir', exist_ok=True)

Jeśli brakuje argumentu exist_ok

Jeśli masz starszą wersję Pythona i nie masz argumentu exist_ok w os.madeirs, możesz użyć os.path.exists, aby określić, czy istnieje katalog końcowy, a następnie utworzyć nowy katalog tylko wtedy, gdy go nie ma.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')