خواندن و ویرایش فایل

اصلاح شده

2026-07-25

بازکردن فایل (open)

fhand = open('mbox.txt')
  • خروجی یک handle به فایله، نه محتوای واقعی — برای خوندن ازش استفاده می‌شه
  • اگه فایل وجود نداشته باشه → خطا: FileNotFoundError

حالت‌های open()

حالت کاربرد
'r' خواندن (پیش‌فرض)
'w' نوشتن — ⚠️ محتوای قبلی فایل پاک می‌شه
'a' append — اضافه‌کردن به انتهای فایل، بدون پاک کردن محتوای قبلی
'x' ساخت فایل جدید — اگه از قبل وجود داشته باشه خطا می‌ده

خواندن فایل

روش ۱: خط به خط با for (برای فایل‌های بزرگ)

fhand = open('mbox.txt')
count = 0
for line in fhand:
    count += 1
print('Line Count:', count)

روش ۲: خواندن کل فایل یکجا (برای فایل‌های کوچک)

fhand = open('mbox.txt')
inp = fhand.read()
print(len(inp))
  • ⚠️ نکته: محتوا رو حتماً توی متغیر ذخیره کنیم، وگرنه با خواندن مجدد از دست می‌ره

جستجو در فایل

fhand = open('mbox.txt')
for line in fhand:
    line = line.rstrip()
    if line.startswith('From:'):
        print(line)
  • rstrip() : حذف فضای خالی سمت راست رشته
  • startswith() : بررسی شروع خط با یک کلمه/رشته خاص

گرفتن نام فایل از کاربر + مدیریت خطا

  • به‌جای هاردکد کردن نام فایل، از کاربر می‌گیریم — ولی چون فایل ممکنه وجود نداشته باشه، حتماً با try-except پوشش بدیم
fname = input('Enter the file name: ')
try:
    fhand = open(fname)
except:
    print('File cannot be opened:', fname)
    exit()
  • exit() : خروج کامل از اجرای برنامه اگه فایل باز نشد

نوشتن در فایل

fout = open('output.txt', 'w')
  • پارامتر 'w':
    • اگه فایل وجود داشته باشه → باز می‌شه برای نوشتن (⚠️ محتوای قبلی پاک می‌شه)
    • اگه وجود نداشته باشه → فایل جدید ساخته می‌شه
line1 = "This here's the wattle,\n"
fout.write(line1)

بستن فایل

fout.close()
  • بعد از اتمام کار با فایل، همیشه باید بسته بشه

روش استاندارد و توصیه‌شده: with open(...) as f:

  • جزوه روش دستی (باز کردن + close() دستی) رو نشون داده، ولی در عمل استفاده از with رایج‌تره
  • مزیت: فایل خودکار بسته می‌شه، حتی اگه وسط کار خطا رخ بده — نیازی به close() دستی نیست
with open('mbox.txt') as fhand:
    for line in fhand:
        print(line.rstrip())
# اینجا فایل خودش بسته شده
with open('output.txt', 'w') as fout:
    fout.write("This here's the wattle,\n")