پایتونمقدماتی۶ دقیقه مطالعهPython 3.12+

کار با فایل‌ها

در این درس با open و with فایل می‌سازید و می‌خوانید، حالت‌های r و w و a را از هم تشخیص می‌دهید و نبودن فایل را با try و except مدیریت می‌کنید.

آنچه در این درس می‌آموزید

  • با open و with در فایل بنویسید و از آن بخوانید
  • حالت‌های r و w و a را به‌جا انتخاب کنید
  • نبودن فایل را با try و except مدیریت کنید و فایل را حذف کنید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب

همهٔ داده‌هایی که تا اینجا ساختید در حافظه بودند؛ با بستن برنامه می‌میرند. برنامه‌های واقعی باید داده را ماندگار کنند: تنظیمات، نمره‌ها، گزارش‌ها. فایل ساده‌ترین شکل ماندگاری است و پایتون برای خواندن و نوشتن آن فقط یک تابع اصلی دارد: open.

در این درس فایل می‌سازید و می‌نویسید، به سه روش مختلف می‌خوانید، حالت‌های باز کردن را از هم جدا می‌کنید و نبودن فایل را با ابزار درس قبل مهار می‌کنید. مثال‌های این درس روی یک فایل آزمایشی به نام note.txt در همان پوشه کار می‌کنند.

نوشتن در فایل

write_note.py
with open("note.txt", "w", encoding="utf-8") as f:
    f.write("Hello from Python!\n")
    f.write("This is a test note.\n")
print("Writing finished")
خروجی کد

Writing finished

تابع open سه چیز می‌گیرد: نام فایل، حالت باز کردن و انکودینگ. حالت "w" یعنی نوشتن (Write)؛ اگر فایل نباشد می‌سازد. دستور with بلوکی باز می‌کند که در پایان آن، فایل خودکار بسته می‌شود؛ این الگوی استاندارد است و فراموش کردن close() را ناممکن می‌کند. متد write متن می‌نویسد و خودش Enter نمی‌گذارد؛ پس \n را دستی می‌گذاریم.

خواندن کل فایل

read_note.py
with open("note.txt", encoding="utf-8") as f:
    content = f.read()
print(content)
خروجی کد

Hello from Python! This is a test note.

حالت خواندن "r" پیش‌فرض open است و نیازی به نوشتنش نیست. متد read کل متن را یک‌جا به شکل رشته می‌دهد؛ برای فایل‌های کوچک راحت‌ترین راه است.

خواندن خط‌به‌خط

شیء فایل مستقیماً قابل پیمایش است؛ هر دور حلقه یک خط:

read_lines.py
with open("note.txt", encoding="utf-8") as f:
    for line in f:
        print(line.strip())
خروجی کد

Hello from Python! This is a test note.

هر خط با \n می‌آید و strip از درس رشته‌ها آن را می‌تراشد. این روش برای فایل‌های بزرگ حافظه‌دوست است چون همیشه فقط یک خط در کار است. اگر به‌جای پیمایش، همهٔ خط‌ها را یک‌جا در لیست می‌خواهید، متد readlines همین کار را می‌کند.

حالت‌های باز کردن

حالت معنا رفتار با محتوای قبلی
r خواندن فایل باید از قبل باشد
w نوشتن بی‌درنگ پاک می‌شود
a افزودن حفظ می‌شود و نوشتن به انتها می‌رود

وقتی فایل وجود ندارد

خواندن فایلی که نیست، استثنا می‌دهد؛ و ابزار مهارش را در درس قبل ساختید:

safe_read.py
try:
    with open("missing.txt", encoding="utf-8") as f:
        print(f.read())
except FileNotFoundError:
    print("File not found")
خروجی کد

File not found

FileNotFoundError از استثناهای پرتکرار کار با فایل است؛ گرفتن آن به‌جای اجازهٔ فروپاشی، به شما اجازه می‌دهد فایل تازه بسازید یا پیام مناسبی بدهید.

حذف فایل

پاک کردن فایل هم کار روزمره است؛ ماژول os که در درس بعد با خانواده‌اش آشنا می‌شوید، آن را فراهم می‌کند:

cleanup.py
import os
os.remove("note.txt")
print("File removed")
خروجی کد

File removed

تمرین‌ها

تمرین

تمرین ۱ — شمارش خط‌ها

برنامه‌ای بنویسید که سه خط در فایل result.txt بنویسد، سپس آن را با readlines بخواند و تعداد خط‌ها را چاپ کند. در پایان، فایل آزمایشی را با os.remove پاک کنید تا چیزی به جا نماند.

python
# Write your code here
نمایش راه‌حل
python
with open("result.txt", "w", encoding="utf-8") as f:
    f.write("one\n")
    f.write("two\n")
    f.write("three\n")

with open("result.txt", encoding="utf-8") as f:
    lines = f.readlines()

print(len(lines))

import os
os.remove("result.txt")
خروجی کد

3

::: :::

خلاصه

  • open شیء فایل می‌دهد و with آن را در پایان بلوک خودکار می‌بندد.
  • حالت w می‌نویسد و محتوای قبلی را پاک می‌کند؛ a به انتها می‌افزاید؛ r (پیش‌فرض) می‌خواند.
  • read کل متن را می‌دهد؛ پیمایش شیء فایل خط‌به‌خط می‌رود و readlines لیست خط‌ها می‌دهد.
  • نبودن فایل خطای FileNotFoundError می‌دهد و با try و except مهار می‌شود.
  • encoding="utf-8" را همیشه صریح بنویسید تا متن فارسی سالم بماند.

تمام کدهای این دوره تا حالا در تک‌فایل بود؛ برنامه‌های واقعی چندفایلی‌اند. در درس بعدی کد را با ماژول‌ها و پکیج‌ها سازمان می‌دهیم و از کتابخانهٔ استاندارد پایتون بهره می‌گیریم.

منابع و ارجاع‌ها

درس‌های مرتبط