کتابخانۀ استاندارد {stdlib#}

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

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

بیایید چند ماژول مفید را مورد بررسی قرار دهیم.

هشدار: اگر مطالب این فصل بیش از حد برایتان پیشرفته است، می توانید از این فصل بگذرید. با این حال، اکیداً توصیه می کنم هر زمانی که در کار با پایتون احساس راحتی بیشتری کردید، به این فصل بازگردید.

ماژول sys

ماژول sys قابلیت هایی را در اختیارمان قرار می دهد که به سیستم عامل و محیط اجرای سیستم وابسته هستند. پیش تر مشاهده کردیم که لیست sys.argv شامل آرگومان های خط فرمان است.

فرض کنید می خواهیم نسخۀ نرم افزار پایتونی را که از آن استفاده می کنیم، بررسی کنیم. ماژول sys این اطلاعات را در اختیار ما قرار می دهد.

>>> import sys
>>> sys.version_info
sys.version_info(major=3, minor=6, micro=0, releaselevel='final', serial=0)
>>> sys.version_info.major == 3
True

نحوۀ عملکرد

ماژول sys دارای یک تاپل version_info است که اطلاعات مربوط به نسخه را در اختیار ما قرار می دهد. اولین عضو این تاپل، شمارۀ نسخۀ اصلی است. می توانیم این اطلاعات را استخراج و از آنها استفاده کنیم.

ماژول logging

اگر بخواهید برخی از مشکلات مربوط به اشکال زدایی یا پیام های مهم درجایی ذخیره شوند تا بتوانید بررسی کنید که آیا برنامۀ شما مطابق انتظار اجرا شده است یا خیر، چطور؟ چگونه می توان این پیام ها را در «جایی ذخیره کرد»؟ این امر می تواند با استفاده از ماژول logging انجام شود.

با نام stdlib_logging.py ذخیره کنید:

import os
import platform
import logging

if platform.platform().startswith('Windows'):
    logging_file = os.path.join(os.getenv('HOMEDRIVE'),
                                os.getenv('HOMEPATH'),
                                'test.log')
else:
    logging_file = os.path.join(os.getenv('HOME'),
                                'test.log')

print("Logging to", logging_file)

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s : %(levelname)s : %(message)s',
    filename=logging_file,
    filemode='w',
)

logging.debug("Start of the program")
logging.info("Doing something")
logging.warning("Dying now")

خروجی:

$ python stdlib_logging.py
Logging to /Users/swa/test.log

$ cat /Users/swa/test.log
2014-03-29 09:27:36,660 : DEBUG : Start of the program
2014-03-29 09:27:36,660 : INFO : Doing something
2014-03-29 09:27:36,660 : WARNING : Dying now

از دستور cat در خط فرمان برای خواندن فایل 'test.log' استفاده می کنیم. اگر دستور cat دردسترس نیست، می توانید به جای آن فایل test.log را در یک ویرایشگر متن باز کنید.

نحوۀ عملکرد

ما از سه ماژول موجود در کتابخانۀ استاندارد استفاده می کنیم _ ماژول os برای تعامل با سیستم عامل، ماژول platform برای دریافت اطلاعات مربوط به محیط سیستم یعنی سیستم عامل و ماژول logging برای ثبت اطلاعات.

ابتدا با بررسی رشته ای که ()platform.platform باز می گرداند، مشخص می کنیم از چه سیستم عاملی استفاده می کنیم (برای اطلاعات بیشتر به import platform; help(platform) مراجعه کنید). اگر سیستم عامل ویندوز باشد، درایو اصلی، پوشۀ اصلی و نام فایلی را که می خواهیم اطلاعات در آن ذخیره شود، مشخص می کنیم. با کنار هم قرار دادن این سه بخش، مسیر کامل فایل به دست می آید. برای سایر محیط ها، کافیست پوشۀ اصلی کاربر را بدانیم تا مسیر کامل فایل را به دست آوریم.

از تابع ()os.path.join برای کنار هم قرار دادن این سه بخش استفاده می کنیم. دلیل استفاده از یک تابع خاص به جای اینکه صرفاً رشته ها را با یکدیگر جمع کنیم، این است که این تابع تضمین می کند مسیر کامل با فرمت مورد نظر سیستم عامل مطابقت داشته باشد. نکته: روش ()join که در اینجا استفاده می کنیم و بخشی از ماژول os است، با روش رشته ای ()join که در بخش های دیگر این کتاب استفاده کرده ایم، متفاوت است.

ماژول logging را پیکربندی می کنیم تا تمام پیام ها را با فرمتی مشخص در فایلی که تعیین کرده ایم، بنویسید.

در نهایت، می توانیم پیام هایی را ثبت کنیم که برای اشکال زدایی، اطلاع رسانی، هشدار یا حتی اعلام خطاهای بحرانی در نظر گرفته شده اند. پس از اجرای برنامه، می توانیم این فایل را بررسی کنیم و متوجه شویم در برنامه چه اتفاقی افتاده است؛ حتی اگر هیچ اطلاعاتی به کاربری که برنامه را اجرا کرده نمایش داده نشده باشد.

مجموعۀ ماژول هفته {motw#}

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

بهترین راه برای بررسی بیشتر کتابخانۀ استاندارد، مطالعۀ مجموعۀ عالی Python Module of the week نوشتۀ Doug Hellmann است که به صورت کتاب نیز دردسترس است؛ و مطالعۀ مستندات پایتون نیز مفید خواهد بود.

خلاصه

در این فصل، برخی از قابلیت های بسیاری از ماژول های موجود در کتابخانۀ استاندارد پایتون را بررسی کردیم. اکیداً توصیه می شود نگاهی به مستندات کتابخانۀ استاندارد پایتون بیندازید تا با ماژول های مختلف دیگر آشنا شوید.

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

results matching ""

    No results matching ""