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

این نسخه جدید فایل زیر را معرفی میکند: [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 گنجانده شده است؛
نسخهٔ ۱ در کنسول پایتون کار نمیکرد. در همان کنسول، نسخهٔ ۲ نتایج زیر را تولید میکند:
اکنون هیچ خطایی مشاهده نمیشود.