برنامه های خط فرمان خود را با نوارهای پیشرفت عالی مدرن کنید.
هر زمان که فایلی را دانلود میکنید یا بازی را شروع میکنید، یک انیمیشن زیبا میبینید که تا زمانی که کامل شود، خود را بهروزرسانی میکند. این نوار پیشرفت است. نوار پیشرفت یک عنصر گرافیکی است که برای تجسم پیشرفت یک کار مانند دانلود، آپلود یا انتقال فایل استفاده می شود.
دو نوع نوار پیشرفت وجود دارد: معین و نامعین. نوارهای پیشرفت مشخص پیشرفت یک کار را در طول زمان ردیابی می کند. نوارهای پیشرفت نامشخص بی نهایت با یک انیمیشن حلقه اجرا می شوند.
بنابراین، چگونه میتوانید یک نوار پیشرفت مشخص در برنامه پایتون CLI ایجاد کنید؟
ماژول tqdm چیست؟
tqdm یک ماژول است که عمدتا توسط Casper da Costa-Luis به همراه ده عضو دیگر نگهداری می شود. tqdm از کلمه عربی taqaddum گرفته شده است که می تواند به معنای “پیشرفت” باشد و مخفف “من تو را خیلی دوست دارم” در اسپانیایی (te quiero demasiado) است.
با استفاده از ماژول tqdm می توانید یک نوار پیشرفت جذاب و کاربردی درست در ترمینال خود ایجاد کنید. برای نصب ماژول tqdm، ترمینال خود را باز کرده و اجرا کنید:
pip install tqdm
ماژول زمان چیست؟
ماژول ابزار استاندارد پایتون به طور پیش فرض شامل ماژول زمان است، بنابراین نیازی به نصب آن ندارید. می توانید از عملکرد خواب ارائه شده در ماژول زمان برای اضافه کردن تاخیر به برنامه های خود استفاده کنید که به تجسم پیشرفت نوار کمک می کند.
میتوانید از ماژول زمان برای دریافت تاریخ و زمان، برنامهریزی وظایف، و ساخت برنامههای کاربردی مفید مانند ساعت زنگ دار ساده یا کرونومتر استفاده کنید.
نحوه اضافه کردن نوار پیشرفت و سفارشی کردن آن
استفاده از نوار پیشرفت پیشفرض آسان است و میتوانید آن را با چندین گزینه سفارشی کنید.
1. نوار پیشرفت ساده
می توانید با وارد کردن کلاس tqdm از ماژول tqdm و تابع خواب از ماژول زمان، یک نوار پیشرفت ساده ایجاد کنید. از یک حلقه for استفاده کنید و tqdm را در محدوده مورد نظر خود تکرار کنید.
محدوده می تواند هر چیزی تا 9e9 (نه میلیارد) باشد. برای اضافه کردن یک تاخیر، تعداد ثانیه ها را به عملکرد خواب منتقل کنید تا بتوانید نوار پیشرفت را در عمل تجسم کنید و ببینید.
شما می توانید یک نوار پیشرفت ساده مانند این را پیاده سازی کنید:
from tqdm import tqdm
from time import sleep
for i in tqdm(range(100)):
sleep(.1)
به جای وارد کردن tqdm، میتوانید trange را از ماژول tqdm وارد کنید تا tqdm و محدوده را ترکیب کرده و پارامتر را مستقیماً ارسال کنید.
from tqdm import trange
from time import sleep
for i in trange(100):
sleep(.1)
خروجی ای که با ایجاد یک نوار پیشرفت ساده به دست می آورید به شکل زیر است:
این خروجی شامل نسخه های گرافیکی و متنی پیشرفت به همراه آمار زمان بندی است.
2. نوار پیشرفت با متن توضیحات
می توانید یک برچسب توصیفی به نوار پیشرفت اضافه کنید تا هدف آن را توضیح دهید. متنی را که میخواهید در گیومههای دوتایی نمایش دهید به عنوان پارامتر desc ارسال کنید:
for i in tqdm(range(0, 10), desc ="Progress: "):
sleep(.4)
خروجی ای که با افزودن متن توضیحات به همراه نوار پیشرفت به دست می آورید به این صورت است:
3. نوار پیشرفت با عرض سفارشی
به طور پیش فرض، عرض نوار پیشرفت به صورت پویا به اندازه پنجره خروجی تنظیم می شود. با کمک پارامتر ncols می توانید آن را مطابق میل خود شخصی سازی کنید.
شما می توانید یک نوار پیشرفت با عرض سفارشی شده پیاده سازی کنید:
for i in tqdm(range(0, 10), ncols = 100, desc ="Progress: "):
sleep(.1)
خروجی که با افزایش عرض نوار پیشرفت به دست می آورید به صورت زیر است:
4. نوار پیشرفت با استفاده از رنگ
می توانید رنگ نوار پیشرفت را با استفاده از پارامتر رنگ سفارشی کنید. شما می توانید این کار را به دو صورت انجام دهید:
- نام رنگ: می توانید از نام رنگ مانند سبز، مشکی، فیروزه ای و غیره استفاده کنید.
- کد هگز: کد هگز فرمتی است که کامپیوتر رنگ را در آن ذخیره می کند. می توانید رنگ هگز را با یک هش (#) و به دنبال آن 6 کاراکتر در هگزادسیمال (0-9، a-f) نشان دهید. کد هگز #000000 نشان دهنده سیاه است در حالی که #ffffff نشان دهنده سفید است. با تغییر شدت این اعداد، سایه های مختلفی از رنگ ها را به دست می آورید. می توانید از ابزار Color Picker گوگل برای انتخاب و چسباندن رنگ Hex Code استفاده کنید.
شما می توانید نوار پیشرفت را با رنگ های سفارشی به صورت زیر پیاده سازی کنید:
for i in tqdm(range(0, 100), colour="#00ffff", desc ="Progress: "):
sleep(.1)
خروجی که با تغییر رنگ نوار پیشرفت به دست می آورید:
5. نوار پیشرفت با حداقل فاصله
میتوانید یک نوار پیشرفت ایجاد کنید که بهجای تنظیمات پیشفرض، با حداقل فاصله بهروزرسانی میشود. می توانید عددی مانند 1.5 یا 2 را ارسال کنید که به عنوان فاصله بین دو به روز رسانی عمل می کند. مقدار پیش فرض حداقل فاصله 0.1 است.
می توانید یک نوار پیشرفت را با حداقل فاصله اجرا کنید:
for i in tqdm(range(0, 100), mininterval = 2, desc ="Progress: "):
sleep(.1)
خروجی ای که با تعیین حداقل فاصله در نوار پیشرفت به دست می آورید:
6. نوار پیشرفت با استفاده از کاراکترهای ASCII
می توانید به جای نوارهای معمولی که روی صفحه می بینید، یک نوار پیشرفت با استفاده از کاراکترهای ASCII ایجاد کنید. برای استفاده از کاراکترهای ASCII پارامتر ascii را روی فرمت دلخواه تنظیم کنید.
اگر از چیزی مانند 12345* استفاده می کنید، هر یک از ستون های محدوده از یک تا ستاره به ترتیب تکرار می شوند. در حالی که جالب و قابل تنظیم است، هنگام استفاده از آن در برنامه های واقعی، مطمئن شوید که از کاربرپسند استفاده کنید.
شما می توانید نوار پیشرفت را با استفاده از کاراکترهای ASCII به صورت زیر پیاده سازی کنید:
for i in tqdm(range(0, 100), ascii ="12345*"):
sleep(.1)
خروجی ای که با استفاده از کاراکترهای ASCII در نوار پیشرفت به دست می آورید به شکل زیر است:
7. نوار پیشرفت با استفاده از نقطه شروع مشخص
به جای شروع نوار پیشرفت از صفر، می توانید یک نقطه شروع مشخص برای نوار پیشرفت تعیین کنید. یک مقدار شروع مانند 50 به پارامتر اولیه ارسال کنید.
می توانید یک نوار پیشرفت را با استفاده از یک نقطه شروع خاص پیاده سازی کنید:
for i in tqdm(range(0, 100), initial = 50, desc ="Progress: "):
sleep(.1)
خروجی ای که با شروع نوار پیشرفت در یک نقطه مشخص به دست می آورید:
8. نوار پیشرفت با تعداد مشخصی از تکرارها
شما می توانید یک نوار پیشرفت ایجاد کنید که تعداد تکرارهای خاصی را اجرا می کند. اگر می خواهید 500 تکرار از 50000 تکرار کنید، 500 را به عنوان محدوده و 50000 را به عنوان تعداد کل تکرارها به پارامتر کل ارسال کنید.
شما می توانید یک نوار پیشرفت را با استفاده از تعداد خاصی از تکرارها پیاده سازی کنید:
for i in tqdm(range(0, 500), total = 50000, desc ="Progress: "):
sleep(.1)
خروجی ای که با استفاده از نوار پیشرفت با تعداد تکرار مشخص به دست می آورید:
کاربردهای نوار پیشرفت
نوارهای پیشرفت را در موقعیتهای مختلف میبینید، مانند پخش یک پخشکننده رسانه یا نشان دادن مراحل از طریق یک فرم آنلاین.
در حالی که یک نوار پیشرفت زیبا به نظر می رسد، کار مهمی در ارائه بازخورد به کاربر در صورت عدم خروج از وب سایت انجام می دهد.