Python | metoda os.makedirs().

Vse funkcije v modulu os dvignejo OSError v primeru neveljavnih ali nedostopnih imen in poti datotek ali drugih argumentov, ki imajo pravilen tip, vendar jih operacijski sistem ne sprejema. V tem članku bomo videli, kako ustvariti imenike rekurzivno z uporabo modula os in tudi o metodi os.makedirs().

Sintaksa funkcije Python os.makedirs().

Sintaksa: os.makedirs(pot, način = 0o777, obstoj_ok = False)

Parameter:

  1. pot : predmet, podoben poti, ki predstavlja pot do datotečnega sistema. Objekt, podoben poti, je objekt niza ali bajtov, ki predstavlja pot.
  2. način (neobvezno) : Vrednost celega števila, ki predstavlja način na novo ustvarjenega imenika. Če je ta parameter izpuščen, se uporabi privzeta vrednost Oo777.
  3. obstoj_ok (neobvezno) : za ta parameter je uporabljena privzeta vrednost False. Če ciljni imenik že obstaja, se sproži OSError, če je njegova vrednost False, sicer ne. Za vrednost True imenik ostane nespremenjen.

Vrsta vračila: Ta metoda ne vrne nobene vrednosti.

Metoda os.makedirs() v Pythonu

os.makedirs() metoda v Python se uporablja za rekurzivno ustvarjanje imenika. To pomeni, da med ustvarjanjem listnega imenika manjka kateri koli imenik vmesne ravni, os.makedirs() metoda jih bo ustvarila vse.

Na primer, razmislite o naslednji poti:

/home/User/Documents/GeeksForGeeks/Authors/ihritik 

Recimo, da želimo ustvariti imenik »ihritik«, vendar imenik »GeeksForGeeks« in »Avtorji« nista na voljo na poti. Potem os.makedirs() metoda bo ustvarila vse nerazpoložljive/manjkajoče imenike na navedeni poti. Najprej bosta ustvarjena »GeeksForGeeks« in »Avtorji«, nato bo ustvarjen imenik »ihritik«.

Primeri funkcij Python os.makedirs().

Spodaj je nekaj primerov funkcije os.makedirs(), s katerimi lahko vidimo, kako ustvariti imenike rekurzivno z uporabo os modul :

Ustvarjanje imenika z uporabo os.makedirs()>

V tem primeru je os.makedirs()> metoda se uporablja za ustvarjanje ugnezdenih imenikov. Prvi razdelek ustvari imenik z imenom ihritik znotraj poti imenika Avtorji. Drugi razdelek z določenimi dovoljenji ustvari imenik c, ki je ugnezden znotraj techcodeview.com/a/b.

Python3




import> os> # Leaf directory> directory> => 'ihritik'> # Parent Directories> parent_dir> => '/home/User/Documents/GeeksForGeeks/Authors'> # Path> path> => os.path.join(parent_dir, directory)> # Create the directory 'ihritik'> os.makedirs(path)> print> (> 'Directory '%s' created'> %> directory)> # Leaf directory> directory> => 'c'> # Parent Directories> parent_dir> => '/home/User/Documents/techcodeview.com/a/b'> # mode> mode> => 0o666> path> => os.path.join(parent_dir, directory)> os.makedirs(path, mode)> print> (> 'Directory '%s' created'> %> directory)>

Izhod:

Directory 'ihritik' created Directory 'c' created 

Napake pri uporabi metode os.makedirs().

V tem primeru je os.makedirs()> metoda poskuša ustvariti imenik z imenom ihritik znotraj poti GeeksForGeeks. Če imenik že obstaja, metoda sproži an OSError> . Po uspešni izdelavi se natisne potrditveno sporočilo.

Python3




import> os> # Directory> directory> => 'ihritik'> # Parent Directory path> parent_dir> => '/home/User/Documents/GeeksForGeeks'> # Path> path> => os.path.join(parent_dir, directory)> # Create the directory 'ihritik'> os.makedirs(path)> print> (> 'Directory '%s' created'> %> directory)>

Izhod:

Traceback (most recent call last):  File 'makedirs.py', line 21, in   os.makedirs(path)  File '/usr/lib/python3.6/os.py', line 220, in makedirs  mkdir(name, mode) FileExistsError: [Errno 17] File exists: '/home/User/Documents/GeeksForGeeks/ihritik' 

Obravnava napak pri uporabi metode os.makedirs().

V tem primeru je os.makedirs()> metoda se uporablja z exist_ok> parameter nastavljen na True> zatreti OSError> če imenik že obstaja. Če imenik ne obstaja, bo ustvarjen. Vendar pa drugo OSError> izjeme, kot je neveljavno ime poti, je še vedno mogoče dvigniti in jih je treba obravnavati ločeno.

Python3




import> os> # Directory> directory> => 'ihritik'> # Parent Directory path> parent_dir> => '/home/ihritik/Desktop/GeeksForGeeks'> # Path> path> => os.path.join(parent_dir, directory)> # Create the directory 'ihritik'> try> :> > os.makedirs(path, exist_ok> => True> )> > print> (> 'Directory '%s' created successfully'> %> directory)> except> OSError as error:> > print> (> 'Directory '%s' can not be created'> )>

Izhod:

Directory 'ihritik' created successfully