کتابخانه استاندارد پایتون
کتابخانه استاندارد پایتون مجموعهای از ماژولها و بستههای آماده است که همراه با زبان پایتون ارائه میشوند و ابزارهای لازم برای توسعه برنامههای قدرتمند و کارآمد بکاند را فراهم میکنند. این کتابخانه شامل ماژولهایی برای مدیریت فایل و دایرکتوری، پردازش داده، شبکه، اتوماسیون سیستم، تحلیل متن و بسیاری وظایف رایج دیگر است. استفاده از آن باعث کاهش وابستگی به کتابخانههای خارجی، افزایش قابلیت حمل و پایداری برنامه و تسهیل توسعه سریع میشود. مفاهیم کلیدی شامل ماژولها (واحدهای حاوی توابع مشخص)، بستهها (گروه ماژولها)، سینتکس پایتون، ساختار دادههای داخلی مانند لیست، دیکشنری و مجموعهها، الگوریتمهای بهینه و اصول برنامهنویسی شیءگرا هستند. با استفاده از این کتابخانه، خواننده یاد میگیرد چگونه ماژولها را ترکیب کرده، خطاها را مدیریت کند، عملکرد را بهینهسازی نماید و راهحلهای پیچیده بکاند را ساختاربندی و نگهداری کند، که در نهایت به ایجاد برنامههای مقیاسپذیر و قابل اعتماد کمک میکند.
یک مثال عملی تحلیل فایلهای لاگ سرور برای شناسایی و شمارش خطاها است. در این مثال از ماژول os
برای عملیات روی فایلها، datetime
برای ثبت زمان، re
برای جستجوی مبتنی بر عبارت منظم، collections.Counter
برای شمارش خطاها و json
برای ذخیرهسازی نتایج استفاده شده است. این مثال نشان میدهد که چگونه میتوان با ترکیب چند ماژول یک راهحل ماژولار و قابل نگهداری ایجاد کرد. هر ماژول مسئولیت مشخص خود را دارد و کد خوانا، ساختاریافته و کارآمد باقی میماند. این روش به صورت مستقیم در مانیتورینگ سرور، تحلیل خودکار لاگها و ایجاد گزارشها یا بصریسازی دادهها قابل استفاده است.
Example
pythonimport os
import datetime
import re
import json
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()
error_lines = [line for line in lines if re.search(r'ERROR', line)]
error_count = Counter([line.split()[1] for line in error_lines])
with open("error_summary.json", '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 | جستجوی Regex | re.search(pattern, string) | re.search(r"ERROR", "log") | تحلیل متن |
re | sub | جایگزینی Regex | 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 | ادغام Iterables | 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 | افزودن به Heap | heapq.heappush(heap,item) | heappush(heap,5) | صف اولویت |
heapq | heappop | خروج عنصر کوچک | heapq.heappop(heap) | heappop(heap) | صف اولویت |
threading | Thread | ایجاد 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 | 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 | باز کردن URL | 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() | خط فرمان |
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 | صف ایمن برای Thread | queue.Queue() | q=queue.Queue() | چندنخی |
enum | 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") | _("سلام") | بینالمللیسازی |
xmlrpc | ServerProxy | کلاینت XML-RPC | xmlrpc.client.ServerProxy(url) | ServerProxy("[http://localhost:8000") | RPC](http://localhost:8000%22%29 |
asyncio | run | اجرای Coroutine | asyncio.run(coro) | asyncio.run(main()) | وظایف ناهمزمان |
contextlib | contextmanager | Context Manager | @contextmanager | @contextmanager def cm(): yield | مدیریت منابع |
🧠 دانش خود را بیازمایید
Test Your Knowledge
درک خود از کتابخانه استاندارد پایتون را آزمایش کنید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود