برنامه هایی که ما اجرا می کنیم باید ورودی را دریافت و سپس خروجی را برای کاربر ایجاد و نمایش دهند. این ورودی ها می توانند از طریق خط فرمان، واسط گرافیکی (GUI)، فایل های متنی به فرمت XML یا CSV یا JSON و یا پایگاه داده ها باشند. خروجی نیز به صورت معمول بر روی صفحه نمایش یا درون فایل ها یا پایگاه داده ها نوشته می شود. در این مطلب می خواهیم از طریق ماژول استاندارد sys برنامه هایی را ایجاد کنیم که از طریق خط فرمان ورودی را دریافت و خروجی را نمایش دهد.

اگر با فرمان های ویندوز یا یونیکس کار کرده باشید، دیده اید که فرمت کلی استفاده از آنها به صورت زیر است. ممکن است با اجرای تنهای نام دستور، یک سری خروجی نمایش داده شود و یا اینکه لازم است سوئیچ(هایی) نیز تعیین شود که بازهم ممکن است خود سوئیچ نیز نیاز به یک ورودی داشته باشد که آنرا آرگومان می گوییم.

به طور مثال دستور ls را در نظر بگیرید. در یونیکس ها از این دستور برای نمایش محتوای یک دایرکتوری استفاده می شود. اگر این دستور را به تنهایی اجرا کنیم، محتوای دایرکتوری جاری (current directory) نمایش داده می شود ولی می توانیم نام و مسیر یک دایرکتوری را به عنوان آرگومان به آن ارسال کنیم. همچنین می توانیم از سوئیچ های (یا option های) مختلف آن استفاده کنیم تا خروجی های متفاوت را ایجاد کند. به طور مثال از سوئیج l برای نمایش جزییات بیشتری در مورد هر فایل یا دایرکتوری استفاده می شود. به طور کلی هر سوئیچ (یا option) رفتار متفاوتی را در قبال ورودی انجام می دهد و از همین رو خروجی متفاوت و فرمت شده ای را برای کاربر ایجاد می کند. توجه کنید در مفاهیم ویندوز از واژه switch استفاده می شود ولی در یونیکس ها به جای آن از عبارت option استفاده می شود.

استفاده از ماژول sys برای ایجاد دستور های خط فرمان

ماژول sys دارای یک لیست به نام argv است که شامل تمامی آرگومان های ارسال شده به اسکریپت است. قطعه کدهای زیر کاربرد استفاده از این لیست را برای ایجاد یک برنامه خط فرمان بسیار ساده نشان می دهد. دستور خط ۳ در کد زیر لیست sys.argv را نمایش می دهد و خط ۵ از کد زیر المان اول (اندیس صفر) از لیست sys.argv را نمایش می دهد.

شکل زیر خروجی دستورهای بالا را نشان می دهد. ابتدا به نام فایل چندین آرگومان ارسال کرده ایم. لیست sys.argv شامل نام اسکریپت و آرگومان هایی است که به آن ارسال می شوند. در واقع نام اسکریپت همان نام دستور است. [sys.argv[0 که اولین المان درون لیست است، اشاره به نام فایل یا اسکریپت پایتون دارد.

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