Σφάλμα κατά τη δημιουργία ενός νέου καταλόγου με την 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')