Skip to content

10. تمرین عملی: نسخه ۲

Image

این نسخه جدید فایل زیر را معرفی می‌کند: [config.py]:


def configure():
    import os

    # مسیر مطلق به پوشهٔ این اسکریپت
    script_dir = os.path.dirname(os.path.abspath(__file__))

    # دایرکتوری ریشه که از آن برخی مسیرهای نسبی اندازه‌گیری خواهند شد
    root_dir = "C:/Data/st-2020/dev/python/cours-2020/python3-flask-2020/impots"

    #وابستگی‌های برنامه
    absolute_dependencies = [
        f"{root_dir}/v01/shared",
    ]

    # پیکربندی برنامه
    config = {
        # مسیر مطلق به فایل مالیات‌دهندگان
        "taxpayersFilename"f"{script_dir}/../data/taxpayersdata.txt",
        # مسیر مطلق به فایل نتایج
        "resultsFilename"f"{script_dir}/../data/résultats.txt"
    }

    #به‌روزرسانی syspath
    from myutils import set_syspath
    set_syspath(absolute_dependencies)

    # بازیابی پیکربندی
    return config

توضیحات

  • خط ۵: ما مسیر مطلق پوشه‌ای را که حاوی اسکریپت در حال اجرا است، در این مورد اسکریپت [config.py]، بازیابی می‌کنیم. بنابراین ما مسیر مطلق پوشه [main] را به دست می‌آوریم. این پوشه همچنین حاوی اسکریپت اصلی [main.py] است؛
  • خط ۸: هنگامی که یک فایل مرجع به پوشه برنامه تعلق ندارد، ما برای یافتن آن از [script_dir] استفاده نخواهیم کرد، بلکه از [root_dir] استفاده می‌کنیم. این خط به محض اینکه برنامه به مکان دیگری در سیستم فایل منتقل شود، باید تغییر یابد؛
  • خطوط ۱۱–۱۳: مسیرهای مطلق تمام پوشه‌هایی که باید برای اجرای برنامه در مسیر پایتون (Python Path) گنجانده شوند، فهرست شده‌اند. در خط ۱۲، پوشه [shared] از نسخه ۱ تمرین برنامه ارجاع داده شده است؛
  • خطوط 16–21: پیکربندی برنامه را در یک دیکشنری به نام [config] تعریف می‌کنند. در اینجا، ما مسیرهای مطلق فایل‌های متنی که توسط برنامه پردازش می‌شوند را مشخص می‌کنیم. برای این کار، از [script_dir] استفاده می‌کنیم که، به یادآوری، در اینجا به پوشه [main] اشاره دارد؛
  • خطوط 24–25: مسیر پایتون مورد نیاز برنامه تنظیم می‌شود؛

اسکریپت اصلی، [main.py به شرح زیر است:


# راه‌اندازی برنامه
import config

config = config.configure()

#مسیر سیستم پیکربندی شده است – اکنون می‌توان عملیات وارداتی را انجام داد
from impôts_module_01 import calcul_impôt, record_results, get_taxpayers_data

# فایل مودیان
taxpayers_filename = config['taxpayersFilename']
# فایل نتایج
results_filename = config['resultsFilename']

# کد
try:

    # خواندن داده‌های مودی
    taxpayers = get_taxpayers_data(taxpayers_filename)
    # فهرست نتایج
    results = []
    #محاسبه مالیات مودیان
    for taxpayer in taxpayers:
        # محاسبه مالیات یک دیکشنری از کلیدها را بازمی‌گرداند
        # ['marié', 'enfants', 'salaire', 'impôt', 'surcôte', 'décôte', 'réduction', 'taux']
        result = calcul_impôt(taxpayer['marié'], taxpayer['enfants'], taxpayer['salaire'])
        # فرهنگ به فهرست نتایج اضافه می‌شود
        results.append(result)
    #نتایج ذخیره می‌شوند
    record_results(results_filename, results)
except BaseException as erreur:
    #خطاهای مختلفی ممکن است رخ دهد: فایل یافت نشد، محتوای نادرست فایل
    #خطا نمایش داده می‌شود و برنامه بسته می‌شود
    print(f"L'erreur suivante s'est produite : {erreur}]\n")
finally:
    print("Travail terminé...")

توضیحات

  • خطوط ۱–۴: برنامه پیکربندی می‌شود؛
  • خط ۷: می‌دانیم که پس از پیکربندی، مسیر پایتون صحیح است و به‌ویژه شامل پوشه [shared] می‌شود که حاوی اسکریپت [impôts_module_01] است. ما توابع مورد نیاز خود را از این اسکریپت وارد می‌کنیم؛
  • خطوط ۹–۱۲: نام فایل‌های مورد استفاده در پیکربندی یافت می‌شوند. این‌ها مسیرهای مطلق هستند؛
  • خطوط 14–35: کد نسخه 1 گنجانده شده است؛

نسخهٔ ۱ در کنسول پایتون کار نمی‌کرد. در همان کنسول، نسخهٔ ۲ نتایج زیر را تولید می‌کند:

(venv) C:\Data\st-2020\dev\python\cours-2020\python3-flask-2020\impots\v02>python main/main.py
Travail terminé...

اکنون هیچ خطایی مشاهده نمی‌شود.