کار با فایل، ماژول، پکیج و محیط مجازی در پایتون
کار با فایل، ماژول، پکیج و محیط مجازی در پایتون در پروژههای واقعی، معمولاً همهی کدها را در یک فایل
در پروژههای واقعی، معمولاً همهی کدها را در یک فایل قرار نمیدهیم. بخشی از اطلاعات ممکن است در فایل ذخیره شوند، کدها میتوانند بین چند ماژول تقسیم شوند و چند ماژول مرتبط نیز میتوانند در قالب یک پکیج سازماندهی شوند. همچنین برای جلوگیری از تداخل کتابخانههای پروژههای مختلف، معمولاً از محیط مجازی (Virtual Environment) استفاده میکنیم.
در این فصل با مهمترین و کاربردیترین مفاهیم این بخش آشنا میشویم.
گاهی لازم است اطلاعات برنامه را در یک فایل ذخیره کنیم تا با بستهشدن برنامه از بین نروند. پایتون با استفاده از تابع open() امکان خواندن و نوشتن فایلها را فراهم میکند.
ساختار کلی:
file = open("data.txt", "r")حالتهای پرکاربرد:
| حالت | کاربرد |
|---|---|
r | خواندن فایل |
w | نوشتن در فایل و جایگزین کردن محتوای قبلی |
a | اضافه کردن اطلاعات به انتهای فایل |
فرض کنید فایل data.txt شامل این متن باشد:
Ali
Sara
Rezaبه استفاده از کدهای زیر میتوانیم آن را بخوانیم و در خروجی چاپ کنیم:
file = open("data.txt", "r")
content = file.read()
print(content)
file.close()خروجی:
Ali
Sara
Rezafile = open("data.txt", "w")
file.write("Python Course")
file.close()در این حالت محتوای قبلی فایل با متن جدید جایگزین میشود. یعنی اکنون محتوای فایل data.txt فقط عبارت Python Course است و دیگر خبری از Ali و Sara و Reza نیست.
ولی اگر بخواهیم اطلاعات قبلی باقی بماند و اطلاعات جدید نیز اضافه شوند کد را به صورت زیر مینویسیم:
file = open("data.txt", "a")
file.write("\nAli")
file.close()برای کار با فایلها، روش بهتر و رایجتر استفاده از with است:
with open("data.txt", "r") as file:
content = file.read()
print(content)در این روش، پس از پایان کار، فایل بهصورت خودکار بسته میشود.
تا به اینجا دیدید که در روش معمول، فایل را با open() باز میکنیم و بعد از پایان کار باید خودمان آن را ببندیم:
file = open("data.txt", "r")
content = file.read()
print(content)
file.close()مشکل این روش این است که ممکن است در حین اجرای برنامه خطایی اتفاق بیفتد و اجرای برنامه به دستور file.close() نرسد. در این حالت فایل ممکن است همچنان باز باقی بماند. برای جلوگیری از این مشکل، پایتون ساختار with را در اختیار ما قرار داده است.
with open("data.txt", "r") as file:
content = file.read()
print(content)با این خط :
with open("data.txt", "r") as file:فایل باز میشود و شیء فایل در متغیر file قرار میگیرد. سپس دستوراتی که داخل بلوک with قرار دارند، روی فایل اجرا میشوند:
content = file.read()
print(content)پس از پایان بلوک with، فایل بهصورت خودکار بسته میشود و دیگر نیازی به نوشتن file.close() نداریم.
withاستفاده از with فقط برای خواندن نیست و برای نوشتن نیز کاربرد دارد:
with open("students.txt", "w") as file:
file.write("Ali\n")
file.write("Sara\n")
file.write("Reza\n")پس از اجرای این کد، فایل students.txt ساخته میشود و اطلاعات داخل آن قرار میگیرد.
withاگر بخواهیم اطلاعات قبلی فایل حفظ شود و اطلاعات جدید به انتهای آن اضافه شود، از حالت a استفاده میکنیم:
with open("students.txt", "a") as file:
file.write("Mina\n")در این حالت، Mina به انتهای فایل اضافه میشود.
تورفتگی بعد از with بسیار مهم است. دستوراتی که باید در زمان باز بودن فایل اجرا شوند، باید داخل بلوک with قرار بگیرند:
with open("data.txt", "r") as file:
content = file.read()
print(content)
استفاده از with باعث میشود مدیریت باز و بسته شدن فایل بهصورت خودکار انجام شود و کد ما ایمنتر و تمیزتر باشد.
ماژول در واقع یک فایل پایتون با پسوند .py است که شامل کدهایی مانند متغیرها، توابع یا کلاسهاست. ماژولها کمک میکنند کدهای یک پروژه را به بخشهای کوچکتر و منظمتر تقسیم کنیم. بهجای اینکه همهی توابع، کلاسها و دستورات را در یک فایل بزرگ قرار دهیم، میتوانیم هر بخش مرتبط را در یک فایل جداگانه قرار داده و هر زمان که لازم بود با استفاده از دستور import آن را وارد یک فایل (ماژول) دیگر کرده و از آن استفاده کنیم. این کار باعث خوانایی بیشتر کد، استفاده مجدد از کدها، مدیریت آسانتر پروژه و کاهش پیچیدگی برنامه میشود.
فرض کنید فایلی به نام calculator.py داشته باشیم:
def add(a, b):
return a + b
def multiply(a, b):
return a * bحالا میتوانیم این ماژول را با استفاده از دستور import در فایل دیگری استفاده کنیم.
مثلاً در main.py:
import calculator
print(calculator.add(10, 5))
print(calculator.multiply(4, 3))خروجی:
15
12
برای استفاده از یک ماژول، معمولاً از import استفاده میکنیم:
import math
print(math.sqrt(25))در این مثال، math یکی از ماژولهای استاندارد پایتون است. وقتی به این شکل ماژول math را import میکنیم، میتوانیم از تمام توابع و ثابتهای آن استفاده کنیم. اما اگر فقط به یک تابع از داخل math نیاز داشتیم، نیازی نیست کل آن را import کنیم. در اینصورت برای وارد کردن تابع مورد نظر به شکل زیر عمل میکنیم:
from math import sqrt
print(sqrt(25))همچنین برای راحتی کار میتوانیم با استفاده از دستور as یک نام کوتاهتر برای ماژول انتخاب کنیم و از این به بعد هر زمان نیاز بود با استفاده از آن نام کوتاه به آن ماژول دسترسی پیدا کنیم:
import math as m
print(m.sqrt(25))وقتی تعداد ماژولها زیاد شود، میتوانیم چند ماژول مرتبط را در یک پوشه قرار دهیم. به این ساختار پکیج میگوییم.
مثلاً:
project/
│
├── main.py
│
└── calculator/
├── __init__.py
├── basic.py
└── advanced.py
در اینجا calculator یک پکیج است و دو ماژول basic.py و advanced.py داخل آن قرار دارند. مثلاً:
from calculator.basic import add
print(add(10, 20))کتابخانه مجموعهای از کدهای آماده است که برای انجام کارهای مختلف میتوانیم از آن استفاده کنیم.
برای مثال:
math برای عملیات ریاضیrandom برای تولید اعداد و انتخابهای تصادفیdatetime برای کار با تاریخ و زمانمثلاً:
import random
number = random.randint(1, 10)
print(number)کتابخانههای خارجی نیز وجود دارند که باید آنها را نصب کنیم؛ مانند:
numpy
pandas
matplotlibبرای نصب یک کتابخانه معمولاً از pip استفاده میکنیم:
pip install numpy
pip ابزار استاندارد پایتون برای نصب، حذف، بهروزرسانی و مدیریت پکیجها و کتابخانههای پایتون است. وقتی به کتابخانهای نیاز داریم که بهصورت پیشفرض همراه پایتون نصب نیست، معمولاً از pip برای نصب آن استفاده میکنیم.
برای مثال، برای نصب کتابخانه requests در Terminal محیط VS Code و یا CMD ویندوز میتوانیم بنویسیم:
pip install requestspip پکیج موردنظر را دریافت کرده و آن را در محیط پایتون نصب میکند.
بعد از نصب، میتوانیم در برنامه از آن استفاده کنیم:
import requests
response = requests.get("https://example.com")
print(response.status_code)میتوان چند پکیج را همزمان نصب کرد. در این صورت فقط یک بار به نوشتن pip install نیاز داریم و به دنبال آن اسامی کتابخانههای مورد نظر را مینویسیم:
pip install numpy pandas matplotlibاگر دیگر به کتابخانهای نیاز نداشته باشیم به شکل زیر آن را حذف میکنیم:
pip uninstall requestsبعضی مواقع یک کتابخانه به صورت نصب شده وجود دارد اما ما به آخرین نسخه (ورژن) آن نیاز داریم. در این صورت به کمک دستور زیر آن را به آخرین نسخه ارتقا میدهیم:
pip install --upgrade requestsبرای دیدن فهرست کتابخانههایی که در محیط فعلی نصب شدهاند از دستور list به شکل زیر کمک میگیریم:
pip listمثلاً ممکن است خروجی چیزی شبیه این باشد:
Package Version
---------- -------
numpy 2.3.1
pandas 2.3.1
requests 2.32.4در پروژههای پایتون معمولاً از کتابخانههای مختلفی استفاده میکنیم. ممکن است یک پروژه به نسخه خاصی از یک کتابخانه نیاز داشته باشد، در حالی که پروژهای دیگر به نسخه متفاوتی از همان کتابخانه نیاز داشته باشد.
برای جلوگیری از این تداخل، برای هر پروژه یک محیط مجازی (Virtual Environment) ایجاد میکنیم. محیط مجازی را میتوان یک محیط مستقل برای هر پروژه در نظر گرفت که در آن نسخه پایتون و کتابخانههای موردنیاز پروژه مدیریت میشوند.
فرض کنید پوشهای به نام my_project داریم و آن را در VS Code باز کردهایم. از منوی Terminal یک ترمینال باز میکنیم و دستور زیر را اجرا میکنیم:
python -m venv .venvدر این دستور:
python پایتون را اجرا میکند.m venv – ماژول داخلی venv را برای ساخت محیط مجازی اجرا میکند.venv. نام پوشهای که محیط مجازی در آن ساخته میشودبعد از اجرای دستور، پوشهای مانند زیر در پروژه ایجاد میشود:
my_project/
│
├── .venv/
│
└── main.pyپوشه venv. شامل فایلها و ابزارهای لازم برای محیط مجازی پروژه است.
دستور زیر را اجرا میکنیم:
.venv\Scripts\Activate.ps1اگر محیط مجازی با موفقیت فعال شود، معمولاً نام آن در ابتدای خط Terminal نمایش داده میشود:
(.venv) PS C:\my_project>وجود (venv.) نشان میدهد که محیط مجازی فعال است. حالا اگر مثلاً بنویسیم:
pip install pandasکتابخانه pandas در همین محیط مجازی نصب میشود.
گاهی VS Code بهصورت خودکار محیط مجازی را تشخیص میدهد، اما بهتر است نحوه انتخاب آن را هم بدانیم.
در VS Code کلیدهای زیر را بزنید:
Ctrl + Shift + Pسپس بنویسید:
Python: Select Interpreterو از فهرست نمایشدادهشده، Python مربوط به پوشه .venv را انتخاب کنید. از این به بعد VS Code برنامه را با Python همین محیط اجرا میکند.
در برنامههای واقعی، همیشه همهچیز مطابق انتظار پیش نمیرود؛ ممکن است کاربر مقدار نامناسبی وارد کند، فایلی وجود نداشته باشد یا عملیاتی با خطا مواجه شود. اگر این خطاها بهدرستی مدیریت نشوند، اجرای برنامه متوقف میشود. در این بخش با مدیریت خطا (Exception Handling) در پایتون آشنا میشویم و یاد میگیریم با استفاده از try، except، else و finally خطاهای احتمالی را کنترل کنیم و از متوقف شدن ناگهانی برنامه جلوگیری کنیم.
گام بعدی : مدیریت خطا در پایتونکار با فایل، ماژول، پکیج و محیط مجازی در پایتون در پروژههای واقعی، معمولاً همهی کدها را در یک فایل
کپسولهسازی (Encapsulation) در پایتون فرض کنید کلاسی برای حساب بانکی نوشتهاید. اگر هر کسی بتواند موجودی حساب را مستقیماً تغییر
وراثت و مفاهیم پیشرفته شی گرایی تا اینجا یاد گرفتهاید که چگونه با استفاده از کلاس (Class) و شی (Object)
کلاس و شیء در پایتون (Object-Oriented Programming) تا اینجا با متغیرها، شرطها، حلقهها، توابع و ساختارهای داده در پایتون آشنا
تابع لامبدا (Lambda Function) در پایتون گاهی اوقات فقط به یک تابع خیلی کوچک نیاز داریم؛ تابعی که قرار است
توابع در پایتون اگر هنگام برنامهنویسی مجبور شوید یک قطعه کد را بارها تکرار کنید، برنامه شما طولانی، شلوغ و
مجموعه (Set) در پایتون به زبان ساده، Set مجموعهای از عناصر منحصربهفرد (Unique) است که ترتیب مشخصی ندارد و اجازه
دیکشنری در پایتون تا اینجا با لیست (List) و تاپل (Tuple) آشنا شدیم که هر دو مجموعهای از دادهها را
تاپل (Tuple) در پایتون بعد از آشنایی با لیست (List)، نوبت به یکی دیگر از ساختارهای داده در پایتون یعنی
لیست (List) در پایتون پرکاربردترین ساختار داده تا اینجا یاد گرفتید که هر متغیر فقط یک مقدار را در خود
ساختارهای داده در پایتون در برنامههای واقعی معمولاً با یک داده سروکار نداریم، بلکه باید تعداد زیادی اطلاعات را ذخیره
حلقههای تکرار در پایتون (Python Loops) فرض کنید معلم میخواهد نمرات ۳۰ دانشآموز را از کاربر دریافت کند. اگر حلقه
عملگرهای مقایسهای (Comparison Operators) تا اینجا یاد گرفتیم که با عملگرهای محاسباتی میتوانیم اعداد را با هم جمع، تفریق و…
دریافت ورودی از کاربر در پایتون (Python Input) تا اینجا یاد گرفتیم که چگونه مقدار یک متغیر را خودمان داخل
عملگرهای محاسباتی در پایتون (Arithmetic Operators) تقریباً تمام برنامهها به انجام محاسبات نیاز دارند؛ از جمع و تفریق ساده گرفته
کار با رشتهها در پایتون (Python Strings) مدیریت و پردازش متنها در برنامهها در دنیای برنامهنویسی، اطلاعات همیشه عدد و
متغیرها در پایتون (Python Variables) اولین قدم برای ذخیره و پردازش اطلاعات تصور کنید یک برنامه مینویسید که قرار است
شروع برنامه نویسی با پایتون ساخت اولین پروژه (Hello World) فهرست مطالب بعد از نصب Python چه کاری انجام دهیم؟
آموزش نصب پایتون و ابزارهای موردنیاز (راهنمای کامل برای ویندوز) اگر تصمیم گرفتهاید برنامهنویسی را یاد بگیرید، احتمالاً نام زبان
الگوهای کندل استیک پیشرفته: راهنمای جامع برای معاملهگران حرفهای الگو های کندل استیک پیشرفته (یا به بیان دیگر الگوهای شمعی
آیلتس جنرال یا آکادمیک؟ کدام را باید انتخاب کنیم؟ آیا میدانید که انتخاب اشتباه بین آیلتس آکادمیک و جنرال میتواند
دانلود رایگان نمونه سوالات آزمون PTE جنرال اگر تصمیم گرفتهاید با هدف مهاجرت به یک کشور انگلیسی زبان، در آزمون
معرفی آزمون های زبان انگلیسی معتبر در ایران| کدام یک بهتر است؟ اگه قصد ادامه تحصیل یا مهاجرت داشته باشید،
بهترین روشهای آمادگی برای آزمون تافل چگونه برای آزمون تافل آماده شویم؟ آیا شما هم قصد دارید برای کسب نمره
چگونه در خارج از کشور برای آزمون آیلتس ثبت نام کنیم؟ اگر قصد مهاجرت تحصیلی یا کاری دارید، احتمالاً نام
آزمون GRE مناسب چه رشتههایی است؟ اگر قصد ادامه تحصیل در مقاطع کارشناسی ارشد یا دکترا در دانشگاههای بینالمللی را
بهترین نمونه سوالات اسپیکینگ تافل هوم ادیشن آزمون تافل هوم ادیشن این روزها یکی از پرطرفدارترین گزینهها برای سنجش مهارت
نحوه ثبت نام در آزمون دولینگو در ایران به صورت کامل نحوه ثبت نام در آزمون دولینگو در ایران چگونه
هزینه آزمون GRE در ایران چقدر است؟ اگر قصد مهاجرت تحصیلی دارید، احتمالاً نام آزمون GRE به گوشتان خورده است.
راهنمای کامل ثبتنام و پرداخت هزینه آزمون PTE در ترکیه برای متقاضیان ایرانی آزمون PTE (Pearson Test of English) یکی از
ووچر آزمون چیست و چگونه میتوان آن را تهیه کرد؟ ثبتنام در آزمونهای بینالمللی مانند TOEFL، GRE، PTE، GMAT، IELTS
بهترین تکنیک های لیسنینگ آیلتس برای کسب نمره بالا آزمون آیلتس (IELTS) یکی از معتبرترین آزمونهای ارزیابی مهارت زبان انگلیسی
آزمون پلاس مرجع آموزش برنامهنویسی، هوش مصنوعی، شبکه، نمونه سؤالات کنکورهای کامپیوتر، آزمونهای زبان دکتری و مدارک بینالمللی فناوری اطلاعات است. با ارائه آموزشهای تخصصی، منابع آموزشی و راهنمای آزمونها، به دانشجویان و متخصصان کمک میکنیم تا مهارتهای خود را توسعه داده و در مسیر موفقیت تحصیلی و شغلی گام بردارند.