makedirs för att skapa djupa hierarkiska kataloger rekursivt i Python

Företag

Fel när en ny katalog skapas med os.mkdir() i en icke-existerande katalog

os.mkdir()Detta är den metod som används för att skapa en katalog (mapp) i Python. Om du försöker skapa en ny katalog i en obefintlig katalog uppstår ett fel.(FileNotFoundError)

import os

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

Skapa kataloger rekursivt med os.madeirs()

Om du använder os.makedirs() istället för os.mkdir() skapas en mellanliggande katalog, så att du kan skapa en djup hierarkisk katalog rekursivt.

os.makedirs('not_exist_dir/new_dir')

I det här exemplet skapas alla på en gång. Det är okej om det finns flera nya mellanliggande kataloger.

  • mellanliggande katalog: not_exist_dir
  • slutlig katalog: new_dir

Men om slutkatalogen redan finns kommer ett fel att uppstå.(FileExistsError)

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

Om det finns ett argument exist_ok

Sedan Python 3.2 har argumentet exist_ok lagts till, och om exist_ok=True uppstår inget fel även om slutkatalogen redan finns. Om slutkatalogen inte finns kommer en ny att skapas, och om den finns kommer ingenting att göras. Detta är praktiskt eftersom du inte behöver kontrollera att slutkatalogen existerar i förväg.

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

Om argumentet exist_ok saknas

Om du har en äldre version av Python och inte har argumentet exist_ok i os.madeirs kan du använda os.path.exists för att avgöra om det finns en slutkatalog eller inte, och sedan skapa en ny endast om det inte finns någon slutkatalog.

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