تطبيقات

تطبيق معمارية الطبقات الثلاث

وهذا مثال لبرنامج يقرأ الملف المعطى فيعالجه ثم نتيجة المعالجة بنفس اسم الملف متبوعًا بكلمة _processed:

from pathlib import Path

import typer

app = typer.Typer()

@app.command()
def hello(name: str):
    print('Hello', name)

@app.command()
def uppercase(file_path: str):
    # قراءة الملف
    p = Path(file_path).resolve()
    with open(file=p, mode='r') as file:
        content = file.read()
    
    # معالجة النص
    content = content.upper()

    # كتابة النتيجة
    p = p.with_stem(f'{p.stem}_processed')
    with open(file=p, mode='w') as file:
        file.write(content)

if __name__ == "__main__":
    app()

مثال لتشغيل البرنامج:

python main.py uppercase ./relative/path/to/file.txt

فإن كان الملف موجودًا فستلاحظ وجود ملف جديد باسم: file_processed.txt.

وفي هذا المثال رأينا الطبقات الثلاث جميعًا:

  1. طبقة العرض: يتكفل typer بطبقة العرض؛ وهي الكيفية التي يستخدم بها المستفيد البرنامج (وهي سطر الأوامر)
  2. طبقة المنطق: وتتمثل في السطر content = content.upper()
  3. طبقة البيانات: وهي في الأول والأخير: قراءة الملف المحدد في المدخلات ثم كتابة النتيجة في ملف