5668 Stimmen

Wie kann ich ein verschachteltes Verzeichnis sicher erstellen?

Wie kann man am elegantesten prüfen, ob das Verzeichnis, in das eine Datei geschrieben werden soll, existiert, und wenn nicht, das Verzeichnis mit Python erstellen? Das habe ich versucht:

import os

file_path = "/my/directory/filename.txt"
directory = os.path.dirname(file_path)

try:
    os.stat(directory)
except:
    os.mkdir(directory)

f = file(filename)

Irgendwie habe ich die os.path.exists (Danke Kanja, Blair und Douglas). Dies ist, was ich jetzt habe:

def ensure_dir(file_path):
    directory = os.path.dirname(file_path)
    if not os.path.exists(directory):
        os.makedirs(directory)

Gibt es ein Kennzeichen für open() die dafür sorgt, dass dies automatisch geschieht?

42 Stimmen

Im Allgemeinen müssen Sie den Fall berücksichtigen, dass im Dateinamen kein Verzeichnis enthalten ist. Auf meinem Rechner ergibt dirname('foo.txt') '', das nicht existiert und makedirs() zum Scheitern bringt.

9 Stimmen

Wenn der Pfad existiert, muss man nicht nur prüfen, ob es sich um ein Verzeichnis und nicht um eine normale Datei oder ein anderes Objekt handelt (viele Antworten prüfen dies), sondern auch, ob es beschreibbar ist (ich habe keine Antwort gefunden, die dies geprüft hat)

14 Stimmen

Falls Sie hierher gekommen sind, um übergeordnete Verzeichnisse einer Dateipfadzeichenkette zu erstellen p Hier ist mein Codeschnipsel: os.makedirs(p[:p.rindex(os.path.sep)], exist_ok=True)

10voto

Hussam Kurd Punkte 5459

Sie müssen den vollständigen Pfad angeben, bevor Sie das Verzeichnis erstellen:

import os,sys,inspect
import pathlib

currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
your_folder = currentdir + "/" + "your_folder"

if not os.path.exists(your_folder):
   pathlib.Path(your_folder).mkdir(parents=True, exist_ok=True)

Das funktioniert bei mir und hoffentlich auch bei Ihnen

9voto

Michael Strobel Punkte 369

Yo uso os.path.exists() , aquí ist ein Python 3-Skript, mit dem geprüft werden kann, ob ein Verzeichnis existiert, das Verzeichnis erstellt wird, wenn es nicht existiert, und es gelöscht wird, wenn es existiert (falls gewünscht).

Es fordert die Benutzer zur Eingabe des Verzeichnisses auf und kann leicht geändert werden.

9voto

alissonmuller Punkte 317

Ich sah Heikki Toivonen y A-B-B Antworten und dachte an diese Variante.

import os
import errno

def make_sure_path_exists(path):
    try:
        os.makedirs(path)
    except OSError as exception:
        if exception.errno != errno.EEXIST or not os.path.isdir(path):
            raise

8voto

Mit diesem Befehl prüfen und erstellen Sie das Verzeichnis

 if not os.path.isdir(test_img_dir):
     os.mkdir(test_img_dir)

8voto

Rufen Sie die Funktion create_dir() am Einstiegspunkt Ihres Programms/Projekts.

import os

def create_dir(directory):
    if not os.path.exists(directory):
        print('Creating Directory '+directory)
        os.makedirs(directory)

create_dir('Project directory')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X