کتاب یک بایت از پایتون.فصل چهاردم .کتابخانه استاندارد پایتون
از PyLearn.com
فهرست مندرجات |
کتابخانه استاندارد پایتون
معرفی
کتابخانه استاندارد پایتون با نصب پایتون در دسترس قرار می گیرد . این کتابخانه شامل خیل عظیمی از ماژول های مفید هست . بسیار مهم هست که شما با کتابخانه استاندارد پایتون آشنا بشوید چرا که اگر با ماژول های این کتابخانه آشنا باشید ، بسیاری از مشکلات شما می تواند آسان تر و سریع تر حل شود .
می خواهیم برخی از این ماژول های کتابخانه را که استفاده رایج تری دارند توضیح بدهیم . شما می توانید جزئیات کاملتری برای تمام این ماژول های کتابخانه استاندارد پایتون را در قسمت "Library Refrence" از مستندات پایتون به دست بیاورید . این راهنما نیز با نصب پایتون در اختیار شما قرار می گیرد .
ماژول sys
ماژول sys شامل عملیات مخصوص سیستم است . برای مثال در زیر خواهیم دید که sys.argv ، لیستی شامل آرگومان های خط فرمان هست .
آرگومان های خط فرمان
مثال 14.1. استفاده از sys.argv
#!/usr/bin/python
# Filename: cat.py
import sys
def readfile(filename):
'''Print a file to the standard output.'''
f = file(filename)
while True:
line = f.readline()
if len(line) == 0:
break
print line, # notice comma
f.close()
# Script starts from here
if len(sys.argv) < 2:
print 'No action specified.'
sys.exit()
if sys.argv[1].startswith('--'):
option = sys.argv[1][2:]
# fetch sys.argv[1] but without the first two characters
if option == 'version':
print 'Version 1.2'
elif option == 'help':
print '''\
This program prints files to the standard output.
Any number of files can be specified.
Options include:
--version : Prints the version number
--help : Display this help'''
else:
print 'Unknown option.'
sys.exit()
else:
for filename in sys.argv[1:]:
readfile(filename)
خروجی
$ python cat.py
No action specified.
$ python cat.py --help
This program prints files to the standard output.
Any number of files can be specified.
Options include:
--version : Prints the version number
--help : Display this help
$ python cat.py --version
Version 1.2
$ python cat.py --nonsense
Unknown option.
$ python cat.py poem.txt
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
نحوه ی عملکرد این مثال
این برنامه سعی می کند که کار دستور cat در لینوکس/یونیکس را برای کاربران تقلید کند . شما کافیست نام های برخی از فایلهای متنی را در جلوی آن مشخص کنید تا محتوای آنها را بروی خروجی چاپ کند .
وقتی که یک برنامه پایتون اجرا می شود ، یعنی نه در مُد تعاملی ، حداقل یک آیتم در لیست sys.argv قرار می گیرد که نام برنامه ی فعلی ست که در حال اجراست و در خانه sys.argv[0] قرار می گیرد ، چرا که لیست ها در پایتون از 0 شروع می شوند . ما بقی آرگومان ها ی خط فرمان به دنبال این آیتم می آیند .
در این مثال برای اینکه برنامه ی ما کاربر پسند باشد ، یکسری گزینه هایی (options)را برای برنامه فراهم کردیم تا کاربر با استفاده از آن ها اطلاعات بیشتری در مورد برنامه ما کسب کند . از اولین آرگومان برای بررسی اینکه آیا گزینه ایی برای برنامه مشخص شده است یا خیراستفاده می کنیم . اگر گزینه ی --version به کار رفته بود ، شماره ی نسخه برنامه چاپ می شود . و بطور مشابه ، هنگامیکه گزینه --help مشخص می شود ، اطلاعاتی کلی از برنامه داده می شود . از تابع sys.exit نیز برای خروج از برنامه در حال اجرا استفاده می شود . برای جزئیات بیشتر help(sys.exit) را ملاحظه نمائید .
هنگامی که گزینه ایی در جلوی اسم برنامه مشخص نشده باشد ، و نام فایل ها به برنامه پاس داده شود ، برنامه به راحتی به همان ترتیبی که در خط فرمان آورده شده است ، هر خط از فایل ها را در خروجی چاپ می کند.
درحاشیه باید گفت که نام cat مختصری برای concatenate (هم زنجیرکردن) هست که در اصل همان کاری ست که برنامه انجام می دهد . که می تواند یک فایل یا دو فایل و یا شماری از فایل ها را به هم بچسباند/ زنجیر کند و در خروجی چاپ کند .
کمی بیشتر درباره sys
دستور sys.version رشته ایی شامل اطلاعاتی در خصوص نسحه پایتونی که نصب کرده اید را به شما نشان می دهد . دستور sys.version_info شامل یک چندتایی است که کار با مقادیر نسخه ی پایتون در برنامه را آسان ترمی سازد .
[swaroop@localhost code]$ python >>> import sys >>> sys.version '2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]' >>> sys.version_info (2, 3, 4, 'final', 0)
ماژول os
این ماژول عملیات مخصوص ِ سیستم عامل را ارائه می دهد . این ماژول مخصوصا هنگامی که می خواهید برنامه شما مستقل ازplatform باشد ، بسیار مهم است . بدین معنی که ، شما را قادر می سازد برنامه هایی بنویسید که هم بروی Linux و هم بروی Windows بدون کوچک ترین مشکلی و بدون نیاز به تغییراتی کارکند . بعنوان مثالی در این مورد استفاده از متغیر os.sep به جای جداکننده مسیر خاص هر سیستم عامل هست . [مترجم : جداکننده مسیر ، در لینوکس کارکتر / و در ویندوز کاراکتر \ هست. ]
برخی از بخش هایی از ماژول os که مفیدتر هستند در زیر فهرست شده است ، اکثر خود توصیف هستند .
- • os.name : شامل رشته ایی ست که platform ایی که در حال استفاده از آن هستید را مشخص می کند . مثل 'nt' برای ویندوز و 'posix' برای کاربران Linux/unix .
- • تابع os.getcwd() ، دایرکتوری جاری را بر می گرداند ، بدین معنی که مسیر دایرکتوری ایی را که برنامه پایتون فعلی در حال کار بروی آن است را برمی گرداند .
- • توابع os.getenv() و os.putenv() به ترتیب برای گرفتن و تنظیم کردن متغیرهای محیطی به کار می روند .
- • تابع os.listdir() نام تمامی فایل ها و دایرکتوری ها را در دایرکتوری مشخص شده ، برمی گرداند.
- • تابع os.remove() برای حذف یک فایل به کار می رود .
- • تابع os.system() برای اجرای یک دستور تحتcmd/shell به کار می رود .
- • os.linesep : رشته ایی را می دهد که حاوی پایانگر خط در platform فعلی ست . برای مثال ، ویندوز از '\r\n' ، لینوکس از '\n' و مکینتاش از '\r' استفاده می کند .
- • تابع os.path.split() نام دایرکتوری و نام فایل از مسیر مشخص شده را بصورت جداگانه در یک چندتایی بر می گرداند .
>>> os.path.split('/home/swaroop/byte/code/poem.txt')
('/home/swaroop/byte/code', 'poem.txt')
- • توابع os.path.isfile() و os.path.isdir() به ترتیب بررسی می کنند که آیا مسیر مشخص شده به یک فایل اشاره می کند و یا به یک دایرکتوری . مشابه تابع os.path.exist() است که برای بررسی اینکه مسیر مشخص شده واقعا وجود دارد یا خیر به کار می رود .
شما می توانید مستندات استاندارد پایتون را برای جزئیات بیشتر این توابع و متغیرها وارسی کنید . می توانید از دستور help(sys) و یا غیره استفاده کنید .
خلاصه
برخی از عملیات ماژول های sys و os از کتابخانه ی استاندارد پایتون را مشاهده نمودیم . شما می بایست مستندات استاندارد پایتون را برای این ماژول ها و دیگر ماژول ها وارسی کنید .
در فصل بعدی ، جنبه های مختلفی از پایتون را که گشت ما در دنیای پایتون را کامل تر می کند را پوشش خواهیم داد .

