makedirs για την αναδρομική δημιουργία βαθιών ιεραρχικών καταλόγων στην Python

Επιχείρηση

Σφάλμα κατά τη δημιουργία ενός νέου καταλόγου με την os.mkdir() σε έναν ανύπαρκτο κατάλογο

os.mkdir()Αυτή είναι η μέθοδος που χρησιμοποιείται για τη δημιουργία ενός καταλόγου (φακέλου) στην Python. Αν προσπαθήσετε να δημιουργήσετε έναν νέο κατάλογο σε έναν μη υπάρχοντα κατάλογο, θα εμφανιστεί σφάλμα.(FileNotFoundError)

import os

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

Δημιουργία καταλόγων αναδρομικά με την os.madeirs()

Αν χρησιμοποιήσετε την os.makedirs() αντί της os.mkdir(), θα δημιουργηθεί ένας ενδιάμεσος κατάλογος, ώστε να μπορείτε να δημιουργήσετε αναδρομικά έναν βαθύ ιεραρχικό κατάλογο.

os.makedirs('not_exist_dir/new_dir')

Στην περίπτωση αυτού του παραδείγματος, θα τα δημιουργήσει όλα ταυτόχρονα. Είναι εντάξει αν υπάρχουν πολλοί νέοι ενδιάμεσοι κατάλογοι.

  • ενδιάμεσος κατάλογος: not_exist_dir
  • τελικός κατάλογος: new_dir

Ωστόσο, εάν ο τελικός κατάλογος υπάρχει ήδη, θα εμφανιστεί σφάλμα.(FileExistsError)

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

Εάν υπάρχει ένα επιχείρημα exist_ok

Από την Python 3.2, έχει προστεθεί το όρισμα exist_ok, και αν exist_ok=True, δεν θα εμφανιστεί σφάλμα ακόμα και αν ο τελικός κατάλογος υπάρχει ήδη. Αν ο τελικός κατάλογος δεν υπάρχει, θα δημιουργηθεί ένας νέος, και αν υπάρχει, δεν θα γίνει τίποτα. Αυτό είναι βολικό επειδή δεν χρειάζεται να ελέγξετε εκ των προτέρων την ύπαρξη του τελικού καταλόγου.

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

Εάν λείπει το όρισμα exist_ok

Αν έχετε μια παλαιότερη έκδοση της Python και δεν έχετε το επιχείρημα exist_ok στο os.madeirs, μπορείτε να χρησιμοποιήσετε το os.path.exists για να προσδιορίσετε αν υπάρχει ή όχι ένας τελικός κατάλογος και στη συνέχεια να δημιουργήσετε έναν νέο μόνο αν δεν υπάρχει τελικός κατάλογος.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')
Copied title and URL