makedirs om recursief diepe hiërarchische mappen aan te maken in Python

Bedrijf

Fout bij het aanmaken van een nieuwe map met os.mkdir() in een niet-bestaande map

os.mkdir()Dit is de methode die gebruikt wordt om een directory (map) aan te maken in Python. Als u probeert een nieuwe map aan te maken in een niet-bestaande map, zal er een fout optreden.(FileNotFoundError)

import os

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

Maak recursief mappen aan met os.madeirs()

Als je os.makedirs() gebruikt in plaats van os.mkdir(), zal het een tussenliggende directory maken, zodat je recursief een diepe hiërarchische directory kunt maken.

os.makedirs('not_exist_dir/new_dir')

In het geval van dit voorbeeld worden ze allemaal in één keer aangemaakt. Het is OK als er meerdere nieuwe tussenliggende directories zijn.

  • tussenliggende map: not_exist_dir
  • definitieve map: new_dir

Als de einddirectory echter al bestaat, treedt er een fout op.(FileExistsError)

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

Als er een argument exist_ok

Sinds Python 3.2 is het argument exist_ok toegevoegd, en als exist_ok=True, zal er geen fout optreden, zelfs als de einddirectory al bestaat. Als de einddirectory niet bestaat, wordt er een nieuwe aangemaakt, en als hij wel bestaat, wordt er niets gedaan. Dit is handig omdat je niet van tevoren het bestaan van de einddirectory hoeft te controleren.

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

Als het argument exist_ok ontbreekt

Als je een oudere versie van Python hebt en het argument exist_ok niet in os.madeirs hebt, kun je os.path.exists gebruiken om te bepalen of er al dan niet een einddirectory is, en dan alleen een nieuwe aanmaken als er geen einddirectory is.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')