کار با فایل، ماژول، پکیج و محیط مجازی در پایتون

در پروژه‌های واقعی، معمولاً همه‌ی کدها را در یک فایل قرار نمی‌دهیم. بخشی از اطلاعات ممکن است در فایل ذخیره شوند، کدها می‌توانند بین چند ماژول تقسیم شوند و چند ماژول مرتبط نیز می‌توانند در قالب یک پکیج سازمان‌دهی شوند. همچنین برای جلوگیری از تداخل کتابخانه‌های پروژه‌های مختلف، معمولاً از محیط مجازی (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
Reza
 

نوشتن در فایل

file = 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)

در این روش، پس از پایان کار، فایل به‌صورت خودکار بسته می‌شود.

استفاده از with برای کار با فایل

تا به اینجا دیدید که در روش معمول، فایل را با 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 باعث می‌شود مدیریت باز و بسته شدن فایل به‌صورت خودکار انجام شود و کد ما ایمن‌تر و تمیزتر باشد.

ماژول (Module) چیست؟

ماژول در واقع یک فایل پایتون با پسوند .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 استفاده می‌کنیم:

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))

پکیج (Package) چیست؟

وقتی تعداد ماژول‌ها زیاد شود، می‌توانیم چند ماژول مرتبط را در یک پوشه قرار دهیم. به این ساختار پکیج می‌گوییم.

مثلاً:

project/
│
├── main.py
│
└── calculator/
    ├── __init__.py
    ├── basic.py
    └── advanced.py

 

در اینجا calculator یک پکیج است و دو ماژول basic.py و advanced.py داخل آن قرار دارند. مثلاً:

from calculator.basic import add
print(add(10, 20))

کتابخانه (Library) چیست؟

کتابخانه مجموعه‌ای از کدهای آماده است که برای انجام کارهای مختلف می‌توانیم از آن استفاده کنیم.

برای مثال:

  • math برای عملیات ریاضی
  • random برای تولید اعداد و انتخاب‌های تصادفی
  • datetime برای کار با تاریخ و زمان

مثلاً:

import random
number = random.randint(1, 10)
print(number)

کتابخانه‌های خارجی نیز وجود دارند که باید آن‌ها را نصب کنیم؛ مانند:

numpy
pandas
matplotlib

برای نصب یک کتابخانه معمولاً از pip استفاده می‌کنیم:

pip install numpy

دستور pip در پایتون

pip ابزار استاندارد پایتون برای نصب، حذف، به‌روزرسانی و مدیریت پکیج‌ها و کتابخانه‌های پایتون است. وقتی به کتابخانه‌ای نیاز داریم که به‌صورت پیش‌فرض همراه پایتون نصب نیست، معمولاً از pip برای نصب آن استفاده می‌کنیم.

نصب یک کتابخانه

برای مثال، برای نصب کتابخانه requests در Terminal محیط VS Code  و یا CMD ویندوز می‌توانیم بنویسیم:

pip install requests

pip پکیج موردنظر را دریافت کرده و آن را در محیط پایتون نصب می‌کند.

بعد از نصب، می‌توانیم در برنامه از آن استفاده کنیم:

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)

در پروژه‌های پایتون معمولاً از کتابخانه‌های مختلفی استفاده می‌کنیم. ممکن است یک پروژه به نسخه خاصی از یک کتابخانه نیاز داشته باشد، در حالی که پروژه‌ای دیگر به نسخه متفاوتی از همان کتابخانه نیاز داشته باشد.

برای جلوگیری از این تداخل، برای هر پروژه یک محیط مجازی (Virtual Environment) ایجاد می‌کنیم. محیط مجازی را می‌توان یک محیط مستقل برای هر پروژه در نظر گرفت که در آن نسخه پایتون و کتابخانه‌های موردنیاز پروژه مدیریت می‌شوند.

ساخت محیط مجازی در VS Code

فرض کنید پوشه‌ای به نام 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 به‌صورت خودکار محیط مجازی را تشخیص می‌دهد، اما بهتر است نحوه انتخاب آن را هم بدانیم.

در VS Code کلیدهای زیر را بزنید:

Ctrl + Shift + P

سپس بنویسید:

Python: Select Interpreter

و از فهرست نمایش‌داده‌شده، Python مربوط به پوشه .venv را انتخاب کنید. از این به بعد VS Code برنامه را با Python همین محیط اجرا می‌کند.

مدیریت خطا در پایتون

در برنامه‌های واقعی، همیشه همه‌چیز مطابق انتظار پیش نمی‌رود؛ ممکن است کاربر مقدار نامناسبی وارد کند، فایلی وجود نداشته باشد یا عملیاتی با خطا مواجه شود. اگر این خطاها به‌درستی مدیریت نشوند، اجرای برنامه متوقف می‌شود. در این بخش با مدیریت خطا (Exception Handling) در پایتون آشنا می‌شویم و یاد می‌گیریم با استفاده از try، except، else و finally خطاهای احتمالی را کنترل کنیم و از متوقف شدن ناگهانی برنامه جلوگیری کنیم.

گام بعدی : مدیریت خطا در پایتون

برای شرکت در آزمون آماده‌اید؟

با ورود به پنل کاربری می‌توانید جهت ثبت نام در آزمون‌ها و دسترسی به منابع آموزشی اقدام نمایید. کارشناسان ما در اسرع وقت با شما تماس می‌گیرند.

توابع در پایتون

توابع در پایتون اگر هنگام برنامه‌نویسی مجبور شوید یک قطعه کد را بارها تکرار کنید، برنامه شما طولانی، شلوغ و

ادامه مطلب »

مجموعه در پایتون

مجموعه (Set) در پایتون به زبان ساده، Set مجموعه‌ای از عناصر منحصربه‌فرد (Unique) است که ترتیب مشخصی ندارد و اجازه

ادامه مطلب »

تاپل در پایتون

تاپل (Tuple) در پایتون بعد از آشنایی با لیست (List)، نوبت به یکی دیگر از ساختارهای داده در پایتون یعنی

ادامه مطلب »

لیست در پایتون

لیست (List) در پایتون پرکاربردترین ساختار داده​ تا اینجا یاد گرفتید که هر متغیر فقط یک مقدار را در خود

ادامه مطلب »

آموزش نصب پایتون

آموزش نصب پایتون و ابزارهای موردنیاز (راهنمای کامل برای ویندوز) اگر تصمیم گرفته‌اید برنامه‌نویسی را یاد بگیرید، احتمالاً نام زبان

ادامه مطلب »