makedirs برای ایجاد دایرکتوری های سلسله مراتبی عمیق به صورت بازگشتی در پایتون

کسب و کار

خطا هنگام ایجاد دایرکتوری جدید با os.mkdir() در دایرکتوری غیر موجود

os.mkdir()این روشی است که برای ایجاد یک پوشه (پوشه) در پایتون استفاده می شود. اگر بخواهید یک دایرکتوری جدید در یک دایرکتوری که وجود ندارد ایجاد کنید، خطایی رخ می دهد.(FileNotFoundError)

import os

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

ایجاد دایرکتوری به صورت بازگشتی با os.madeirs()

اگر از os.makedirs() به جای os.mkdir() استفاده کنید، یک دایرکتوری میانی ایجاد می کند، بنابراین می توانید به صورت بازگشتی یک دایرکتوری سلسله مراتبی عمیق ایجاد کنید.

os.makedirs('not_exist_dir/new_dir')

در مورد این مثال، همه آنها را به یکباره ایجاد می کند. اگر چندین دایرکتوری میانی جدید وجود داشته باشد، اشکالی ندارد.

  • دایرکتوری میانی:not_exist_dir
  • فهرست نهایی:new_dir

با این حال، اگر فهرست پایانی از قبل وجود داشته باشد، خطایی رخ خواهد داد.(FileExistsError)

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

اگر آرگومان وجود دارد exist_ok

از پایتون 3.2، آرگومان exist_ok اضافه شده است، و اگر exist_ok=True باشد، هیچ خطایی رخ نخواهد داد حتی اگر فهرست پایانی از قبل وجود داشته باشد. اگر پوشه پایانی وجود نداشته باشد، یک پوشه جدید ایجاد می شود و اگر وجود داشته باشد، هیچ کاری انجام نخواهد شد. این راحت است زیرا نیازی به بررسی وجود فهرست ترمینال از قبل ندارید.

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

اگر آرگومان exist_ok گم شده باشد

اگر نسخه قدیمی‌تری از پایتون دارید و آرگومان exist_ok را در os.madeirs ندارید، می‌توانید از os.path.exists برای تعیین اینکه آیا یک فهرست پایانی وجود دارد یا خیر استفاده کنید و سپس فقط در صورت وجود دایرکتوری جدید ایجاد کنید. فهرست پایانی

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