جلسه سی و ششم
استثناها و ادامه فایلها
باز کردن یک فایل از یک زیر پوشه:
هنگامی که پایتون تابع open() را اجرا می کند، به دنبال فایل در همان فهرستی می گردد که برنامه در حال اجرا در آن ذخیره شده است. می توانید با استفاده از یک مسیر نسبی یک فایل را از یک زیر پوشه باز کنید. همچنین می توانید از یک مسیر مطلق برای باز کردن هر فایلی در سیستم خود استفاده کنید.
مسیر مطلق:
مسیر مطلق (Absolute Path) در کامپیوتر به مسیر کامل و دقیق یک فایل یا پوشه در سیستم فایل اشاره دارد. این مسیر شامل تمام پوشهها و زیرپوشههای لازم برای دسترسی به آن فایل یا پوشه است.
مسیر مطلق همیشه از ریشه (root) سیستم فایل شروع میشود و تمام پوشهها و زیرپوشههای لازم را برای دسترسی به آن فایل یا پوشه مشخص میکند.
مسیر نسبی:
مسیر نسبی (Relative Path) به مکان فایل یا پوشه نسبت به موقعیت جاری کاربر اشاره دارد. مسیر نسبی ممکن است شامل پوشهها و زیرپوشههای کمتری باشد و معمولاً با نقطه (.) یا دو نقطه (..) شروع میشود.
مثال 1:خواندن از یک فایل در مسیر نسبی.
f_path = "text_files/alice.txt"
with open(f_path) as f_obj:
lines = f_obj.readlines()
for line in lines:
print(line.rstrip())
مثال 2: خواندن از یک فایل در مسیر مطلق.
f_path = "/home/ehmatthes/books/alice.txt"
with open(f_path) as f_obj:
lines = f_obj.readlines()
یک نمونه مسیر مطلق.
f_path = "C:Usersehmatthesbooksalice.txt"
استثناها
استثناها اشیاء خاصی هستند که به برنامه های شما کمک می کنند به روش های مناسب به خطاها پاسخ دهند. به عنوان مثال اگر برنامه شما سعی می کند فایلی را باز کند که وجود ندارد، می توانید از استثناها برای نمایش یک پیام خطای آموزنده به جای خراب شدن برنامه استفاده کنید
هنگامی که فکر می کنید ممکن است خطایی رخ دهد، می توانید یک بلوک try_except بنویسید تا استثنایی که ممکن است ایجاد شود را مدیریت کنید. بلوک try به پایتون میگوید که اجرای کدی را امتحان کند، و بلوک استثنا به پایتون میگوید که اگر کد منجر به نوع خاصی از خطا شد، چه کاری انجام دهد.
`try`-`except` در پایتون یک بلوک کد است که به شما امکان میدهد تا خطاهای احتمالی را مدیریت کنید. این بلوک کد به شما اجازه میدهد تا در صورت بروز خطا، برنامه را به طور موثر اجرا کنید.
ساختار اصلی `try`-`except` در پایتون به شرح زیر است:
try:
# کد که ممکن است خطا بیندازد
pass
except ExceptionType:
# کد اجرایی در صورت بروز خطای مشخص شده
pass
در اینجا:
– `try` بلوکی است که شامل کد احتمالی خطازا است.
– `except` بلوکی است که در صورت بروز خطا در بلوک `try`، اجرا میشود.
– `ExceptionType` نوع خطایی است که قرار است در بلوک `except` مدیریت شود.
برای مثال 1: مدیریت استثنای ZeroDivisionError(تقسیم بر صفر).
try:
result = 10 / 0 # خطای تقسیم بر صفر
except ZeroDivisionError:
print("Error: Division by zero")
در این مثال، اگر در بلوک `try` خطای `ZeroDivisionError` رخ دهد، برنامه به بلوک `except` میرود و متن “Error: Division by zero” را چاپ میکند.
مثال 2: مدیریت استثنا FileNotFoundError(پیدا نشدن فایل)
f_name = 'siddhartha.txt'
try:
with open(f_name) as f_obj:
lines = f_obj.readlines()
except FileNotFoundError:
msg = "Can't find file {0}.".format(f_name)
print(msg)
در این مثال، اگر در بلوک `try` خطای ` FileNotFoundError ` رخ دهد، برنامه به بلوک `except` میرود و متن “msg” را چاپ میکند.
`try`-`except` به شما امکان میدهد تا خطاها را شناسایی و مدیریت کنید. این بسیار مفید است زیرا باعث میشود برنامه شما در هنگام بروز خطا، به طور موثر اجرا شود و از شکست کامل آن جلوگیری کند.
همچنین میتوان چند بلوک `except` برای مدیریت انواع مختلف خطاها در برنامه استفاده کرد. علاوه بر این، بلوک `finally` نیز میتواند برای اجرای کدی که باید در هر حالت اجرا شود، مورد استفاده قرار گیرد.