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')