مكتبة بايثون القياسية
مكتبة بايثون القياسية هي مجموعة شاملة من الوحدات والحزم المدمجة مع لغة بايثون، توفر أدوات جاهزة لمجموعة واسعة من المهام مثل التعامل مع الملفات، معالجة البيانات، الشبكات، العمليات النظامية، وأكثر. تعتبر هذه المكتبة أساسية لتطوير الخلفيات لأنها تمكن المطورين من تنفيذ وظائف معقدة دون الحاجة إلى الاعتماد على مكتبات خارجية، مما يقلل من وقت التطوير ويزيد من قابلية نقل الشيفرة بين الأنظمة. يمكن استخدام المكتبة للوصول إلى دوال مجربة جيدًا، اتباع أفضل الممارسات، والحفاظ على جودة الشيفرة عبر المشاريع. تشمل المفاهيم الرئيسية الوحدات (Modules) التي تقدم وظائف محددة، الحزم (Packages) التي تجمع وحدات متعلقة، هياكل البيانات المدمجة مثل القوائم والقواميس والمجموعات، الخوارزميات، ومبادئ البرمجة الكائنية. من خلال دراسة مكتبة بايثون القياسية، سيتعلم المطورون كيفية استخدام الوحدات بفعالية، التعامل مع الأخطاء، تحسين الأداء، ودمج عدة مكتبات لإنشاء أنظمة قابلة للصيانة وذات كفاءة عالية في بيئات الإنتاج.
في سيناريو عملي لتطوير الخلفية، قد يحتاج المطور إلى معالجة ملفات السجلات لاستخلاص معلومات مهمة. باستخدام مكتبة بايثون القياسية، يمكن قراءة الملفات، التعامل مع الاستثناءات، معالجة البيانات، توليد الطوابع الزمنية، وإجراء التسلسل بصيغة JSON للتخزين أو التحليل لاحقًا. يوضح هذا الاستخدام دمج عدة وحدات مثل os
لإدارة الملفات، datetime
لإنشاء الطوابع الزمنية، re
للبحث عن أنماط محددة، collections
لتنظيم البيانات بكفاءة، وjson
لتحويل النتائج إلى صيغة قابلة للتبادل. كل وحدة تلعب دورًا محددًا في حل المشكلة. هذا النمط يعكس طريقة شائعة في تطوير الخلفية: دمج عدة وحدات قياسية لتنفيذ عمليات معالجة البيانات بشكل آمن وفعال. فهم هذه الأنماط يمكن المطورين من تحسين الأداء، كتابة شيفرة منظمة، وتطبيق مفاهيم بايثون المتقدمة في بيئات الإنتاج الحقيقية.
Example
pythonimport os
import datetime
import json
import re
from collections import Counter
from math import ceil
# تحديد مسار ملف السجل
log_file = "server.log"
# إنشاء اسم ملف احتياطي مع الطابع الزمني
backup_file = f"backup_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
try:
\# قراءة أسطر الملف
with open(log_file, 'r') as f:
lines = f.readlines()
# فلترة الأسطر التي تحتوي على أخطاء باستخدام regex
error_lines = [line for line in lines if re.search(r'ERROR', line)]
# عد كل نوع خطأ
error_count = Counter([line.split()[1] for line in error_lines])
# تسلسل ملخص الأخطاء بصيغة JSON
summary_file = "error_summary.json"
with open(summary_file, 'w') as f:
json.dump(error_count, f, indent=4)
# إنشاء نسخة احتياطية للملف الأصلي
os.rename(log_file, backup_file)
# حساب عدد النسخ الاحتياطية المطلوبة إذا كان الملف كبيرًا
backups_needed = ceil(len(lines) / 1000)
print(f"النسخ الاحتياطية المطلوبة للملفات الكبيرة: {backups_needed}")
except FileNotFoundError as e:
print(f"خطأ في الملف: {e}")
except Exception as e:
print(f"خطأ غير متوقع: {e}")
📊 Comprehensive Reference
Module | Function | Description | Syntax | Example | Notes |
---|---|---|---|---|---|
os | rename | إعادة تسمية الملفات | os.rename(src, dst) | os.rename("old.txt", "new\.txt") | إدارة الملفات |
sys | exit | إيقاف تشغيل المفسر | sys.exit(\[status]) | sys.exit(1) | إيقاف البرنامج |
math | ceil | التقريب للأعلى | math.ceil(x) | math.ceil(3.4) | عمليات رياضية |
math | sqrt | الجذر التربيعي | math.sqrt(x) | math.sqrt(16) | حسابات رقمية |
datetime | now | التاريخ والوقت الحالي | datetime.datetime.now() | datetime.datetime.now() | إنشاء طوابع زمنية |
datetime | strftime | تنسيق التاريخ والوقت | datetime.strftime(format) | datetime.datetime.now().strftime("%Y-%m-%d") | تحويل للتنسيق النصي |
re | search | البحث باستخدام التعبيرات النمطية | re.search(pattern, string) | re.search(r"ERROR", "log") | مطابقة الأنماط |
re | sub | استبدال النصوص | re.sub(pattern, repl, string) | re.sub(r"\d+", "", "abc123") | تنظيف البيانات |
json | dump | كتابة JSON للملفات | json.dump(obj, fp) | json.dump(data, f) | تبادل البيانات |
json | load | قراءة JSON من الملفات | json.load(fp) | data=json.load(f) | استرجاع البيانات |
collections | Counter | عد العناصر | collections.Counter(iterable) | Counter(\["a","b","a"]) | تحليل التكرار |
itertools | chain | ربط التكرارات | itertools.chain(*iterables) | list(chain(\[1,2],\[3,4])) | تكرار فعال |
functools | reduce | تقليل العناصر | functools.reduce(func, seq) | reduce(lambda x,y:x+y,\[1,2,3]) | برمجة وظيفية |
random | randint | أعداد صحيحة عشوائية | random.randint(a,b) | random.randint(1,10) | اختبارات ومحاكاة |
heapq | heappush | إضافة إلى الهيب | heapq.heappush(heap,item) | heappush(heap,5) | إدارة الطابور ذو الأولوية |
heapq | heappop | إزالة من الهيب | heapq.heappop(heap) | heappop(heap) | إزالة أصغر عنصر |
threading | Thread | إنشاء خيط | threading.Thread(target=func) | threading.Thread(target=my_func) | تنفيذ متزامن |
subprocess | run | تشغيل أوامر خارجية | subprocess.run(args) | subprocess.run(\["ls","-l"]) | استدعاء النظام |
time | sleep | تأخير التنفيذ | time.sleep(seconds) | time.sleep(2) | إدارة الوقت |
pathlib | Path | كائن مسار الملفات | Path("file.txt") | Path("data.txt").exists() | إدارة المسارات |
uuid | uuid4 | توليد معرف فريد | uuid.uuid4() | uuid.uuid4() | معرفات فريدة |
base64 | b64encode | ترميز Base64 | base64.b64encode(data) | base64.b64encode(b"data") | ترميز البيانات |
hashlib | sha256 | تجزئة SHA-256 | hashlib.sha256(data) | hashlib.sha256(b"data").hexdigest() | الأمان |
copy | deepcopy | نسخ عميق للكائنات | copy.deepcopy(obj) | copy.deepcopy(mylist) | منع مشاركة المراجع |
gzip | open | فتح ملفات مضغوطة | gzip.open(filename) | gzip.open("file.gz") | ضغط الملفات |
zipfile | ZipFile | الوصول لأرشيف ZIP | zipfile.ZipFile(file) | with ZipFile("a.zip") as z: pass | ضغط البيانات |
configparser | ConfigParser | قراءة ملفات الإعداد | configparser.ConfigParser() | config.read("config.ini") | إدارة الإعدادات |
message_from_string | تحليل البريد الإلكتروني | email.message_from_string(string) | msg=email.message_from_string(raw) | معالجة البريد | |
urllib | request.urlopen | فتح روابط الإنترنت | urllib.request.urlopen(url) | urllib.request.urlopen("[http://example.com") | طلب](http://example.com%22%29 |
socket | socket | كائن الشبكة | socket.socket() | s=socket.socket() | الاتصال الشبكي |
logging | basicConfig | إعداد السجلات | logging.basicConfig(level) | logging.basicConfig(level=logging.INFO) | تسجيل الأحداث |
argparse | ArgumentParser | تحليل وسائط CLI | argparse.ArgumentParser() | parser=argparse.ArgumentParser() | برمجة CLI |
shutil | copy | نسخ الملفات | shutil.copy(src,dst) | shutil.copy("a.txt","b.txt") | إدارة الملفات |
pprint | pprint | تنسيق الطباعة | pprint.pprint(obj) | pprint.pprint(data) | عرض البيانات بشكل مرتب |
statistics | mean | حساب المتوسط | statistics.mean(data) | statistics.mean(\[1,2,3]) | تحليل البيانات |
statistics | median | حساب الوسيط | statistics.median(data) | statistics.median(\[1,2,3]) | الوسيط المركزي |
queue | Queue | طابور FIFO | queue.Queue() | q=queue.Queue() | قوائم آمنة للخيوط |
enum | Enum | إنشاء تعداد | class Color(Enum): RED=1 | Color.RED | ثوابت معرفة |
typing | List | تلميح النوع | from typing import List | def f(x:List): | التحقق من النوع |
decimal | Decimal | أرقام عالية الدقة | decimal.Decimal("0.1") | Decimal("0.1") | رياضيات دقيقة |
fractions | Fraction | أرقام نسبية | fractions.Fraction(a,b) | Fraction(1,3) | كسور دقيقة |
statistics | stdev | الانحراف المعياري | statistics.stdev(data) | statistics.stdev(\[1,2,3]) | تحليل التباين |
bisect | insort | إدراج مرتب | bisect.insort(list,item) | bisect.insort(a,5) | الحفاظ على الترتيب |
xml | etree.ElementTree | تحليل XML | ET.parse(file) | ET.parse("file.xml") | البيانات المنظمة |
pickle | dump | تسلسل ثنائي | pickle.dump(obj,fp) | pickle.dump(obj,f) | تسلسل ثنائي |
pickle | load | فك التسلسل | pickle.load(fp) | obj=pickle.load(f) | فك التسلسل الثنائي |
shelve | open | قاموس دائم | shelve.open(file) | db=shelve.open("db") | تخزين بسيط للمفاتيح والقيم |
tokenize | generate_tokens | تحليل النصوص | tokenize.generate_tokens(readline) | tokens=list(tokenize.generate_tokens(f.readline)) | تحليل لغوي |
pdb | set_trace | نقطة توقف | pdb.set_trace() | pdb.set_trace() | تصحيح تفاعلي |
inspect | getmembers | تفحص الكائنات | inspect.getmembers(obj) | inspect.getmembers(obj) | أدوات انعكاسية |
socketserver | TCPServer | خادم TCP | socketserver.TCPServer((host,port),handler) | TCPServer(("0.0.0.0",8000),Handler) | خوادم مخصصة |
csv | reader | قراءة CSV | csv.reader(file) | csv.reader(f) | بيانات جدولة |
csv | writer | كتابة CSV | csv.writer(file) | csv.writer(f) | إخراج جدولي |
tarfile | open | الوصول لأرشيف TAR | tarfile.open(file) | tarfile.open("archive.tar") | ضغط البيانات |
wave | open | معالجة ملفات WAV | wave.open(file) | wave.open("audio.wav") | معالجة الصوت |
audioop | add | عمليات صوتية | audioop.add(fragment1,fragment2,2) | audioop.add(b1,b2,2) | معالجة الصوت |
gettext | gettext | الترجمة | gettext.gettext("text") | _("Hello") | التوطين |
xmlrpc | ServerProxy | عميل XML-RPC | xmlrpc.client.ServerProxy(url) | ServerProxy("[http://localhost:8000") | الاتصال](http://localhost:8000%22%29 |
asyncio | run | تشغيل coroutine | asyncio.run(coro) | asyncio.run(main()) | المهام غير المتزامنة |
contextlib | contextmanager | مدير سياق | @contextmanager | @contextmanager def cm(): yield | إدارة الموارد |
📊 Complete Properties Reference
Module | Function | Return Type | Default Behavior | Description | Compatibility |
---|---|---|---|---|---|
os | rename | None | Overwrites if exists | إعادة تسمية ملف أو مجلد | Python 3.x+ |
sys | exit | None | Exits interpreter | إيقاف تنفيذ المفسر | Python 3.x+ |
math | ceil | int | يقرب للأعلى | يعيد أصغر عدد صحيح أكبر أو يساوي x | Python 3.x+ |
math | sqrt | float | الجذر التربيعي | إيجاد الجذر التربيعي للعدد | Python 3.x+ |
datetime | now | datetime | التاريخ الحالي | يعيد التاريخ والوقت الحالي | Python 3.x+ |
datetime | strftime | str | Formatted string | تحويل التاريخ إلى نص | Python 3.x+ |
re | search | Match object | None if not found | البحث عن نمط معين | Python 3.x+ |
re | sub | str | النص الأصلي | استبدال النمط بنص آخر | Python 3.x+ |
json | dump | None | كتابة إلى ملف | تسلسل البيانات إلى JSON | Python 3.x+ |
json | load | object | قراءة JSON | فك تسلسل JSON من ملف | Python 3.x+ |
collections | Counter | Counter | فارغ إذا لم يكن هناك iterable | عد تكرار العناصر | Python 3.x+ |
itertools | chain | iterator | تكرار مرتب | ربط أكثر من iterable | Python 3.x+ |
functools | reduce | Value | العنصر الأول إذا لم يوجد دالة | تقليل iterable لقيمة واحدة | Python 3.x+ |
random | randint | int | النطاق شمول | توليد عدد صحيح عشوائي | Python 3.x+ |
heapq | heappush | None | يحافظ على الهيب | إضافة عنصر للهيب | Python 3.x+ |
heapq | heappop | Value | إزالة الأصغر | إزالة أصغر عنصر من الهيب | Python 3.x+ |
threading | Thread | Thread object | غير مُشغل | إنشاء خيط جديد | Python 3.x+ |
subprocess | run | CompletedProcess | ينتظر اكتمال العملية | تشغيل أمر خارجي | Python 3.x+ |
time | sleep | None | تأخير التنفيذ | تأجيل التنفيذ لعدد معين من الثواني | Python 3.x+ |
pathlib | Path | Path object | None | تمثيل مسار الملفات | Python 3.x+ |
uuid | uuid4 | UUID object | معرف عشوائي | توليد معرف فريد | Python 3.x+ |
base64 | b64encode | bytes | ترميز | ترميز البيانات إلى Base64 | Python 3.x+ |
hashlib | sha256 | str | Hex digest | تجزئة SHA-256 | Python 3.x+ |
copy | deepcopy | object | نسخة كاملة | نسخ عميق للكائن | Python 3.x+ |
gzip | open | file object | وضع القراءة | فتح ملف مضغوط | Python 3.x+ |
zipfile | ZipFile | ZipFile object | وضع القراءة | الوصول لأرشيف ZIP | Python 3.x+ |
configparser | ConfigParser | ConfigParser object | إعدادات فارغة | قراءة ملفات الإعداد | Python 3.x+ |
message_from_string | Message object | Parsing | تحويل النص إلى رسالة بريد | Python 3.x+ | |
urllib | request.urlopen | HTTPResponse | فتح الرابط | طلب HTTP | Python 3.x+ |
socket | socket | Socket object | None | إنشاء اتصال شبكي | Python 3.x+ |
logging | basicConfig | None | إعداد افتراضي | تهيئة السجلات | Python 3.x+ |
argparse | ArgumentParser | ArgumentParser object | فارغ | تحليل وسائط CLI | Python 3.x+ |
shutil | copy | str | إرجاع المسار | نسخ الملفات أو المجلدات | Python 3.x+ |
pprint | pprint | None | عرض منسق | عرض البيانات بشكل منظم | Python 3.x+ |
statistics | mean | float | خطأ إذا كان فارغ | حساب المتوسط | Python 3.x+ |
statistics | median | float | خطأ إذا كان فارغ | حساب الوسيط | Python 3.x+ |
queue | Queue | Queue object | فارغ | طابور FIFO آمن للخيوط | Python 3.x+ |
enum | Enum | Enum class | N/A | إنشاء تعداد ثابت | Python 3.x+ |
typing | List | Type hint | N/A | تلميح نوع للقوائم | Python 3.x+ |
decimal | Decimal | Decimal object | 0 | أرقام عالية الدقة | Python 3.x+ |
fractions | Fraction | Fraction object | 0 | أرقام نسبية دقيقة | Python 3.x+ |
statistics | stdev | float | خطأ إذا لم توجد بيانات كافية | حساب الانحراف المعياري | Python 3.x+ |
bisect | insort | None | يحافظ على الترتيب | إدراج في قائمة مرتبة | Python 3.x+ |
xml | etree.ElementTree | ElementTree object | N/A | تحليل وإنشاء XML | Python 3.x+ |
pickle | dump | None | كتابة ثنائية | تسلسل كائن ثنائي | Python 3.x+ |
pickle | load | object | فك التسلسل | قراءة الكائن الثنائي | Python 3.x+ |
shelve | open | Shelf object | فارغ | قاموس دائم | Python 3.x+ |
tokenize | generate_tokens | iterator | N/A | تحليل نصوص Python | Python 3.x+ |
pdb | set_trace | None | إيقاف التنفيذ | نقطة توقف لتصحيح الأخطاء | Python 3.x+ |
inspect | getmembers | list | فارغ | إرجاع أعضاء الكائن | Python 3.x+ |
socketserver | TCPServer | TCPServer object | ينتظر على serve | خادم TCP | Python 3.x+ |
csv | reader | reader object | N/A | قراءة CSV | Python 3.x+ |
csv | writer | writer object | N/A | كتابة CSV | Python 3.x+ |
tarfile | open | TarFile object | وضع القراءة | الوصول لأرشيف TAR | Python 3.x+ |
wave | open | Wave_read object | وضع القراءة | معالجة ملفات WAV | Python 3.x+ |
audioop | add | bytes | N/A | إضافة مقاطع صوتية | Python 3.x+ |
gettext | gettext | str | النص الأصلي | ترجمة النصوص | Python 3.x+ |
xmlrpc | ServerProxy | ServerProxy object | N/A | عميل XML-RPC | Python 3.x+ |
asyncio | run | نتيجة coroutine | تشغيل الحلقة | تشغيل coroutine غير متزامن | Python 3.x+ |
contextlib | contextmanager | Context manager | N/A | إدارة الموارد | Python 3.x+ |
🧠 اختبر معرفتك
Test Your Knowledge
اختبر فهمك لمكتبة بايثون القياسية
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى