أدوات CLI في بايثون هي برامج يتم تشغيلها من سطر الأوامر. يمكن استخدامها لأداء مجموعة متنوعة من المهام، مثل إدارة الملفات والأنظمة، ومعالجة البيانات، وإنشاء البرامج النصية.
تتميز أدوات CLI بأنها قوية وفعالة، ويمكن استخدامها على أي نظام تشغيل يدعم بايثون. كما أنها سهلة التعلم والاستخدام، مما يجعلها خيارًا جيدًا للمبتدئين.
و يحتوي بايثون على مجموعة متنوعة من أدوات CLI المخفية في مكتبته القياسية. يمكن استخدام هذه الأدوات لأداء مجموعة متنوعة من المهام، مثل:
- التحقق من صحة البيانات: يمكن استخدام أدوات مثل
argparse
وvalidators
للتحقق من صحة البيانات الواردة من المستخدمين. - التفاعل مع النظام: يمكن استخدام أدوات مثل
os
وsubprocess
للتفاعل مع النظام، مثل إدارة الملفات وتنفيذ الأوامر. - عرض المعلومات: يمكن استخدام أدوات مثل
logging
وrich
لعرض المعلومات بطريقة غنية بالمعلومات.
فيما يلي بعض الأمثلة على أدوات CLI المخفية في مكتبة بايثون القياسية:
argparse
: يمكن استخدامargparse
لإنشاء واجهات مستخدم سطر الأوامر (CLI) قابلة للتخصيص.validators
: يمكن استخدامvalidators
للتحقق من صحة البيانات الواردة من المستخدمين.os
: يمكن استخدامos
للوصول إلى الملفات والدوائر والأنظمة.subprocess
: يمكن استخدامsubprocess
لتشغيل البرامج الخارجية.logging
: يمكن استخدامlogging
لتسجيل أحداث البرنامج.rich
: يمكن استخدامrich
لعرض المعلومات بطريقة غنية بالمعلومات.
argparse
argparse
هو وحدة في مكتبة بايثون القياسية تُستخدم لتحليل سطور الأوامر. و يسمح لك بإنشاء واجهات سطر أوامر واضحة وسهلة الاستخدام لبرامجك.
يوفر argparse
مجموعة متنوعة من الميزات لتحليل سطور الأوامر، بما في ذلك:
- دعم للحجج الاختيارية والاختيارية
- دعم للاختصارات
- دعم للقيم المكررة
- دعم للوحدات الفرعية
لاستخدام argparse
، تحتاج أولاً إلى إنشاء معالج argparse
. و يمكنك القيام بذلك باستخدام التابع ArgumentParser()
من وحدة argparse
.
بعد إنشاء معالج argparse
، يمكنك إضافة الحجج إلى المعالج باستخدام التابع add_argument()
. حيث يأخذ معلمات مختلفة تحدد نوع الحجة والقيمة الافتراضية للحجة وما إذا كانت الحجة مطلوبة أم اختيارية.
بمجرد إضافة جميع الحجج إلى المعالج، يمكنك تحليل سطر الأوامر باستخدام التابع parse_args()
. حيث يرجع طريقة كائنًا يمثل الحجج التي تم تمريرها إلى البرنامج.
فيما يلي مثال بسيط على استخدام argparse
:
import argparse
def main():
parser = argparse.ArgumentParser(description="A simple example of argparse.")
parser.add_argument("filename", type=str, help="The name of the file to read.")
parser.add_argument("-c", "--count", type=int, help="The number of lines to read.", default=10)
args = parser.parse_args()
print("Reading file:", args.filename)
with open(args.filename, "r") as f:
for i in range(args.count):
line = f.readline()
print(line)
if __name__ == "__main__":
main()
سيؤدي هذا البرنامج إلى إنشاء واجهة سطر أوامر تسمح للمستخدم بقراءة عدد معين من الأسطر من ملف. يمكن للمستخدم تحديد اسم الملف باستخدام ال argument "filename"
. يمكن للمستخدم أيضًا تحديد عدد الأسطر المراد قراءتها باستخدام ال argument "count"
. إذا لم يحدد المستخدم قيمة لـ “count”، فسيتم استخدام القيمة الافتراضية 10.
فيما يلي مثال على كيفية استخدام هذا البرنامج:
$ python argparse_example.py myfile.txt
Reading file: myfile.txt
This is line 1.
This is line 2.
...
This is line 10.
للحصول على مزيد من المعلومات حول argparse، راجع وثائق Python الرسمية.
فيما يلي بعض الأمثلة الأخرى لاستخدام argparse:
- برنامج لتحويل ملفات النص من تنسيق إلى آخر
- برنامج لتشغيل مجموعة من الاختبارات
- برنامج لإنشاء تقارير
validators
يمكن إجراء فحص البيانات باستخدام أدوات مثل assert
و try/except
. ومع ذلك، فإن هذه الطرق يمكن أن تكون معقدة وصعبة الإدارة.
validators
هي مكتبة يمكن استخدامها للتحقق من صحة البيانات الواردة من المستخدمين. يمكن استخدام validators
للتحقق من صحة تنسيق البيانات، مثل صحة البريد الإلكتروني أو رقم الهاتف.
على سبيل المثال، يمكن استخدام validators
للتحقق من صحة عنوان البريد الإلكتروني الواردة من المستخدم. يمكن أن تبدو الدالة كما يلي:
from validators import EmailValidator
def validate_email(email):
return EmailValidator().validate(email)
if __name__ == "__main__":
email = "johndoe@example.com"
print(validate_email(email))
سيؤدي تشغيل هذا البرنامج إلى طباعة True
.
مكتبة validators
هي أداة مفيدة لفحص البيانات في بايثون. يمكن استخدامها لتحسين جودة الكود ومنع الأخطاء.
فيما يلي بعض الفوائد لاستخدام مكتبة validators
:
- تجعل من السهل فحص البيانات بطرق محددة.
- توفر مجموعة واسعة من أدوات التحقق من صحة البيانات.
- سهلة الاستخدام والتعلم.
- مفتوحة المصدر ومجانية.
os
مكتبة os
في بايثون هي مكتبة توفر مجموعة متنوعة من الدوال والوظائف التي تمكن المبرمجين من التعامل مع نظام التشغيل، بما في ذلك إنشاء وحذف الملفات والمجلدات، وقراءة وكتابة البيانات من الملفات، ومعرفة معلومات حول نظام التشغيل، وتنفيذ الأوامر على نظام التشغيل.
على سبيل المثال، يمكن استخدام os
لإنشاء ملف جديد:
import os
def create_file(filename):
os.makedirs("./files", exist_ok=True)
with open(f"./files/{filename}", "w") as f:
f.write("This is a new file.")
if __name__ == "__main__":
create_file("my_file.txt")
سيؤدي تشغيل هذا البرنامج إلى إنشاء ملف جديد باسم my_file.txt
في مجلد ./files
.
تطبيقات مكتبة os في بايثون
- أتمتة المهام المتكررة على نظام التشغيل، مثل إنشاء ملفات تلقائيًا أو حذف الملفات القديمة.
- تطوير تطبيقات سطح المكتب التي تتفاعل مع نظام التشغيل، مثل التطبيقات التي تفتح أو تغلق الملفات أو تقرأ من أو تكتب إلى مجلد.
- تطوير تطبيقات الويب التي تستخدم نظام التشغيل لتنفيذ المهام، مثل تطبيقات الويب التي تقوم بإنشاء ملفات مؤقتة أو تحذف الملفات القديمة.
ملاحظات:
- مكتبة os توفر مجموعة متنوعة من الدوال والوظائف، ولكن ليس كل الدوال والوظائف متاحة على جميع أنظمة التشغيل.
- يجب استخدام مكتبة os بعناية لتجنب حدوث أي مشاكل مع نظام التشغيل.
subprocess
subprocess
هي مكتبة يمكن استخدامها لتشغيل البرامج الخارجية. و يمكن استخدامها لتشغيل البرامج النصية وتطبيقات الطرف الثالث.
على سبيل المثال، يمكن استخدام subprocess
لتشغيل مترجم Python:
import subprocess
def run_python_script(script_path):
subprocess.run(["python3", script_path])
if __name__ == "__main__":
run_python_script("my_script.py")
سيؤدي تشغيل هذا البرنامج إلى تشغيل ملف my_script.py
باستخدام مترجم بايثون.
logging
هي مكتبة بايثون توفر بنية متكاملة لتسجيل المعلومات من تطبيقك. يمكن استخدامها لتتبع تقدم التطبيق، وتسجيل الأخطاء، وتوفير معلومات حول أداء التطبيق.
مستويات التسجيل
تدعم مكتبة logging خمسة مستويات تسجيل:
- CRITICAL: يدل على خطأ خطير قد يؤدي إلى فشل التطبيق.
- ERROR: يدل على خطأ غير خطير قد يؤثر على أداء التطبيق.
- WARNING: يدل على تحذير قد يؤدي إلى مشاكل في التطبيق.
- INFO: يدل على معلومات عامة حول التطبيق.
- DEBUG: يدل على معلومات مفصلة حول التطبيق.
كيفية استخدام logging
لبدء استخدام مكتبة logging، تحتاج إلى استيرادها أولاً:
import logging
ثم، يمكنك إنشاء مسجل جديد:
logger = logging.getLogger(__name__)
بمكنك بعد ذلك استخدام التابع log()
لتسجيل المعلومات:
logger.log(logging.INFO, "This is an information message")
يمكنك أيضًا استخدام التابع debug()
لتسجيل معلومات مفصلة:
logger.debug("This is a debug message")
إعداد التسجيل
يمكنك إعداد تسجيل التطبيق الخاص بك عن طريق تعديل ملف logging.conf
. هذا الملف عبارة عن ملف نصي يحدد إعدادات تسجيل التطبيق.
فيما يلي مثال على ملف logging.conf
:
[loggers]
keys = root
[handlers]
keys = console
[formatters]
keys = simple
[logger_root]
level = DEBUG
handlers = console
[handler_console]
class = StreamHandler
level = DEBUG
formatter = simple
args = (sys.stdout,)
[formatter_simple]
format = %(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt = %Y-%m-%d %H:%M:%S
هذا الملف يحدد مسجلًا واحدًا باسم root
بمستوى تسجيل DEBUG
. يحدد أيضًا معالجًا واحدًا باسم console
يستخدم تنسيقًا بسيطًا لإخراج المعلومات إلى وحدة التحكم.
أمثلة
فيما يلي بعض الأمثلة على استخدام مكتبة logging:
# مثال على تسجيل معلومات
logger.log(logging.INFO, "This is an information message")
# مثال على تسجيل تحذير
logger.warning("This is a warning message")
# مثال على تسجيل خطأ
logger.error("This is an error message")
# مثال على تسجيل معلومات مفصلة
logger.debug("This is a debug message")
ملاحظات
- مكتبة logging هي مكتبة قوية يمكن استخدامها لتتبع تقدم تطبيقك وتسجيل الأخطاء.
- يمكنك تكوين تسجيل التطبيق الخاص بك عن طريق تعديل ملف
logging.conf
. - هناك العديد من الأمثلة على استخدام مكتبة logging متاحة على الإنترنت.
rich
rich
هي مكتبة يمكن استخدامها لعرض المعلومات بطريقة غنية بالمعلومات. يمكن استخدام rich
لعرض النص والصور والرسومات.
بعض الميزات الرئيسية لـ Rich بايثون:
- دعم مجموعة واسعة من تنسيقات النص، بما في ذلك الجداول والأشكال والمخططات.
- قابلية تخصيص عالية، مما يسمح لك بإنشاء تنسيقات نصية مخصصة.
- سهل الاستخدام، مع واجهة برمجة تطبيقات بسيطة.
على سبيل المثال، يمكن استخدام rich
لعرض رسالة مرحبًا:
import rich
def say_hello():
return rich.print(rich.markdown("**Hello, world!**"))
if __name__ == "__main__":
say_hello()
سيؤدي تشغيل هذا البرنامج إلى عرض رسالة مرحبًا بتنسيق markdown.
فوائد استخدام Rich بايثون:
هناك العديد من الفوائد لاستخدام Rich بايثون، بما في ذلك:
- سهولة الاستخدام: Rich بايثون مكتبة بسيطة وسهلة الاستخدام، مما يجعلها مناسبة للمبتدئين.
- قابلية التخصيص: Rich بايثون مكتبة قابلة للتخصيص للغاية، مما يسمح لك بإنشاء تنسيقات نصية مخصصة.
- التنوع: Rich بايثون مكتبة شاملة تدعم مجموعة واسعة من تنسيقات النص.
هذه مجرد أمثلة قليلة على أدوات CLI المخفية في مكتبة Python القياسية. هناك العديد من الأدوات الأخرى المتاحة، لذا من المهم استكشاف مكتبة Python القياسية للعثور على الأدوات التي تحتاجها.
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.