Wat is het verschil tussen makedirs en mkdir van os?

Ik ben in de war om deze twee osmethoden te gebruiken om de nieuwe map te maken.

Geef me een voorbeeld in Python.


Antwoord 1, autoriteit 100%

makedirs()maakt alle tussenliggende mappenals ze niet bestaan ​​(net als mkdir -pin bash).

mkdir()kan een enkele submap maken en zal een uitzondering genereren als er tussenliggende mappen worden opgegeven die niet bestaan.

Beide kunnen worden gebruikt om een ​​enkele ‘blad’-directory (dirA) te maken:

  • os.mkdir('dirA')
  • os.makedirs('dirA')

Maar makedirs moeten worden gebruikt om ‘takken’ te maken:

  • os.makedirs('dirA/dirB')zal werken [de hele structuur is gemaakt]

mkdirkan hier werken alsdirAal bestaat, maar als dat niet het geval is, wordt er een fout gegenereerd.

Merk op dat, in tegenstelling tot mkdir -pin bash, beide zullen mislukken als het blad al bestaat.


Antwoord 2, autoriteit 20%

(Kan geen commentaar geven, alleen toevoegen aan het antwoord van NPE.)

In Python3 heeft os.makedirseen standaardparameter exist_ok=False.
Als je het instelt op True, zal os.makedirsgeeneen uitzondering genereren als het blad bestaat.
(Terwijl os.mkdirdeze parameter niet heeft.)

Zo:

os.makedirs('dirA', exist_ok=True)

P.S.
U kunt ?typen voor de naam van een methode in de IPython-shell om de documentatie snel te bekijken.
bijv.:

>>> import os
>>> ? os.makedirs

Other episodes