Python’da özyinelemeli olarak derin hiyerarşik dizinler oluşturmak için makedirs

Var olmayan bir dizinde os.mkdir() ile yeni bir dizin oluştururken hata oluştu

os.mkdir()Python’da bir dizin (klasör) oluşturmak için kullanılan yöntem budur. Var olmayan bir dizinde yeni bir dizin oluşturmaya çalışırsanız bir hata oluşacaktır.(FileNotFoundError)

import os

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

os.madeirs() ile özyinelemeli dizinler oluşturun

os.mkdir() yerine os.makedirs() kullanırsanız, bir ara dizin oluşturur, böylece yinelemeli olarak derin bir hiyerarşik dizin oluşturabilirsiniz.

os.makedirs('not_exist_dir/new_dir')

Bu örnek durumunda, hepsini bir kerede oluşturacaktır. Birden fazla yeni ara dizin varsa sorun değil.

  • ara dizin:not_exist_dir
  • son dizin:new_dir

Ancak, bitiş dizini zaten varsa, bir hata oluşur.(FileExistsError)

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

Bir argüman varsa var_ok

Python 3.2’den beri, mevcut_ok argümanı eklenmiştir ve mevcut_ok=Doğru ise, son dizin zaten mevcut olsa bile hiçbir hata oluşmayacaktır. Bitiş dizini yoksa, yeni bir tane oluşturulacak ve varsa hiçbir şey yapılmayacaktır. Bu uygundur çünkü önceden terminal dizininin varlığını kontrol etmenize gerek yoktur.

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

Mevcut_ok argümanı eksikse

Python’un daha eski bir sürümüne sahipseniz ve os.madeirs’de allow_ok argümanına sahip değilseniz, bir bitiş dizini olup olmadığını belirlemek için os.path.exists’i kullanabilir ve ardından yalnızca yoksa yeni bir tane oluşturabilirsiniz. bitiş dizini.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')
Copied title and URL