خطا هنگام ایجاد دایرکتوری جدید با 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')