وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

ایجاد دایرکتوری و دایرکتوری های والد آن در پایتون

0 69
زمان لازم برای مطالعه: 4 دقیقه


معرفی

در پایتون، ما اغلب نیاز به تعامل با سیستم فایل داریم، چه خواندن فایل‌ها، نوشتن برای آنها یا ایجاد دایرکتوری. این بایت تمرکز خواهد کرد روی روش ایجاد دایرکتوری ها در پایتون، و به طور خاص تر، روش ایجاد یک دایرکتوری و هر دایرکتوری والد گمشده. ما کاوش خواهیم کرد os.mkdir و os.makedirs توابع برای این منظور.

چرا باید دایرکتوری های والد را ایجاد کنیم؟

هنگام کار با فایل سیستم، که برای ابزارها یا ابزارهای سیستم معمول است، احتمالاً باید یک فهرست در یک مسیر خاص ایجاد کنید. اگر دایرکتوری های والد آن مسیر وجود نداشته باشد، با خطا مواجه می شوید.

برای جلوگیری از این امر، باید همه دایرکتوری های والد ضروری را ایجاد کنید زیرا سیستم عامل/فایل سیستم این کار را برای شما انجام نمی دهد. با اطمینان از وجود تمام دایرکتوری های والد ضروری قبل از با ایجاد دایرکتوری هدف، می توانید از این خطاها جلوگیری کنید و پایگاه کد قابل اعتمادتری داشته باشید.

ایجاد دایرکتوری با استفاده از os.mkdir

این os.mkdir تابع در پایتون برای ایجاد دایرکتوری استفاده می شود. این تابع مسیر دایرکتوری جدید را به عنوان آرگومان می گیرد. در اینجا یک مثال ساده آورده شده است:

import os

os.mkdir('my_dir')

این یک دایرکتوری جدید به نام ایجاد می کند my_dir در فهرست کاری فعلی با این حال، os.mkdir یک محدودیت دارد – فقط می تواند دایرکتوری نهایی را در مسیر مشخص شده ایجاد کند و فرض می کند که دایرکتوری های والد از قبل وجود دارند. اگر این کار را نکنند، شما یک دریافت خواهید کرد FileNotFoundError.

import os

os.mkdir('parent_dir/my_dir')

اگر parent_dir وجود ندارد، این کد یک را افزایش می دهد FileNotFoundError.

توجه داشته باشید: این os.mkdir تابع نیز a را افزایش می دهد FileExistsError اگر دایرکتوری که می خواهید ایجاد کنید از قبل وجود داشته باشد. این همیشه یک تمرین خوب است که قبل از ایجاد دایرکتوری بررسی کنید که آیا دایرکتوری وجود دارد یا خیر. برای انجام این کار، می توانید عبور کنید exist_ok=True استدلال، مانند این: os.makedirs(path, exist_ok=True). اگر دایرکتوری از قبل وجود داشته باشد، این کار باعث می شود که عملکرد هیچ کاری انجام ندهد.

پیشنهاد می‌کنیم بخوانید:  پیمایش به بالا در وانیل جاوا اسکریپت در وب سایت شما یک وب سایت دارید که کاربران را وادار می کند تا مبلغ طولانی را پایین بیاورند - ارائه یک دکمه برای بازگشت به بالا یک ژست خوب است! در این دست -روی راهنما، ما یاد خواهیم گرفت که چگونه یک دکمه متحرک HTML/CSS/JS بسازیم تا به بالای صفحه بروید...

یکی از راه های دور زدن محدودیت های os.mkdir بررسی دستی و ایجاد هر دایرکتوری والد منتهی به دایرکتوری هدف است. ساده ترین راه برای نزدیک شدن به این مشکل این است که مسیر خود را با اسلش ها تقسیم کنیم و هر کدام را بررسی کنیم. در اینجا مثالی از روش انجام این کار آورده شده است:

import os

path = 'parent_dir/sub_dir/my_dir'


parts = path.split('/')


dir_path = ''


for part in parts:
    dir_path = os.path.join(dir_path, part)
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)

این کد ایجاد خواهد کرد parent_dir، sub_dir، و my_dir اگر از قبل وجود نداشته باشند، اطمینان حاصل کنید که دایرکتوری های والد قبل از دایرکتوری هدف ایجاد شده اند.

با این حال، راه مختصرتری برای رسیدن به همان هدف با استفاده از آن وجود دارد os.makedirs تابعی که در بخش بعدی خواهیم دید.

ایجاد دایرکتوری های والد با استفاده از os.makedirs

برای غلبه بر محدودیت os.mkdir، پایتون تابع دیگری را ارائه می دهد – os.makedirs. این تابع تمام دایرکتوری های سطح متوسط ​​مورد نیاز برای ایجاد دایرکتوری نهایی را ایجاد می کند. در اینجا روش استفاده از آن آورده شده است:

import os

os.makedirs('parent_dir/my_dir')

در این صورت حتی اگر parent_dir وجود ندارد، os.makedirs آن را به همراه ایجاد خواهد کرد my_dir. اگر parent_dir درحال حاضر وجود دارد، os.makedirs به سادگی ایجاد خواهد کرد my_dir درون آن

توجه داشته باشید: پسندیدن os.mkdir، os.makedirs الف را نیز بالا خواهد برد FileExistsError اگر دایرکتوری نهایی که می خواهید ایجاد کنید از قبل وجود داشته باشد. با این حال، اگر دایرکتوری های میانی از قبل وجود داشته باشند، خطایی ایجاد نمی کند.

استفاده کردن pathlib برای ایجاد دایرکتوری ها

این pathlib ماژول در پایتون 3.4 و بالاتر یک رویکرد شی گرا برای مدیریت مسیرهای سیستم فایل ارائه می دهد. خواندن آن شهودی تر و راحت تر از استفاده است os.mkdir یا os.makedirs. برای ایجاد دایرکتوری جدید با pathlib، می توانید از Path.mkdir() روش.

به عنوان مثال:

from pathlib import Path


path = Path('/path/to/directory')


path.mkdir(parents=True, exist_ok=True)

در این کد، parents=True آرگومان به پایتون می گوید که هر دایرکتوری والد ضروری را ایجاد کند، و exist_ok=True در صورتی که دایرکتوری از قبل وجود داشته باشد، عملیات بدون ایجاد استثنا ادامه می‌دهد.

پیشنهاد می‌کنیم بخوانید:  استفاده از cURL در پایتون با PycURL

رسیدگی به استثناها هنگام ایجاد دایرکتوری ها

هنگام کار با فایل سیستم، همیشه ایده خوبی است که استثنائات را مدیریت کنید. این ممکن است به دلیل مجوزها، دایرکتوری موجود یا تعدادی از مشکلات پیش بینی نشده دیگر باشد. در اینجا یک راه برای رسیدگی به استثناها هنگام ایجاد دایرکتوری ها وجود دارد:

from pathlib import Path


path = Path('/path/to/directory')

try:
    
    path.mkdir(parents=True, exist_ok=False)
except FileExistsError:
    print("Directory already exists.")
except PermissionError:
    print("You don't have permissions to create this directory.")
except Exception as e:
    print(f"An error occurred: {e}")

در این کد، ما تنظیم کرده ایم exist_ok=False بالا بردن a FileExistsError اگر دایرکتوری از قبل وجود داشته باشد. سپس این استثنا را همراه با PermissionError و هر استثنای دیگر، و یک پیام مربوطه را چاپ کنید. این به ما کنترل دقیق تری بر روی کاری که در زمان بروز موقعیت های خاص انجام می دهیم، می دهد، اگرچه کمتر مختصر است و به خوانایی آسیب می رساند.

چه موقع باید استفاده کرد سیستم عامل یا pathlib برای ایجاد دایرکتوری ها

انتخاب بین os و pathlib برای ایجاد دایرکتوری ها تا حد زیادی بستگی دارد روی مورد استفاده خاص و ترجیح شخصی شما.

این os ماژول مدتی است که وجود داشته است و به طور گسترده برای تعامل با سیستم عامل استفاده می شود. اگر با نسخه های قدیمی پایتون کار می کنید یا اگر نیاز به استفاده از نسخه های دیگر دارید، انتخاب خوبی است os توابع در کد شما

از سوی دیگر، pathlib یک ماژول جدیدتر است که رویکردی بصری تر و شی گرا برای مدیریت مسیرهای سیستم فایل ارائه می دهد. اگر از پایتون 3.4 یا بالاتر استفاده می کنید و سینتکس مدرن و خوانا را ترجیح می دهید، انتخاب خوبی است.

خوشبختانه هر دو os و pathlib بخشی از کتابخانه استاندارد پایتون هستند، بنابراین برای استفاده از آنها نیازی به نصب بسته های اضافی ندارید.

نتیجه

در این بایت، روش ایجاد دایرکتوری ها و مدیریت استثناها با استفاده از آن را بررسی کرده ایم os و pathlib ماژول ها در پایتون به یاد داشته باشید که انتخاب بین این دو گزینه بستگی دارد روی نیازهای خاص و ترجیحات شخصی شما همیشه هنگام کار با سیستم های فایل، برای قوی تر و قابل اعتمادتر کردن کد خود، از استثنائات استفاده کنید. این مهم است زیرا هنگام کار با فایل‌سیستم‌ها به راحتی می‌توان اشتباه کرد و در نهایت با خطا مواجه شد.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1402-12-29 11:41:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید