حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش کار با فایل در پایتون؛ CSV، JSON و گزارش‌گیری

نوشتن دوباره فایل پایتون؛ جایگزینی کامل محتوا

فایل متنی در پایتون؛ خواندن، نوشتن و متن فارسی · 0٪

✍️ برای جایگزینی کامل یک یادداشت، حالت w مناسب است. حتی اگر متن جدید کوتاه‌تر باشد، بخش اضافه متن قبلی باقی نمی‌ماند؛ فایل از ابتدا خالی و بعد نوشته می‌شود. این رفتار با تغییر چند خانه یک فهرست یا نوشتن روی ابتدای حافظه متفاوت است. اگر متن جدید خالی باشد هم فایل باید خالی شود.

مثلاً اگر قبلاً «گزارش طولانی فروش» داخل فایل باشد و متن تازه «تمام» باشد، نتیجه فقط «تمام» است. افزودن این دو متن کنار هم قرارداد دیگری دارد و مربوط به حالت append است. ابتدا یک نمونه موقت با متن اولیه می‌سازیم، بعد همان مسیر را برای جایگزینی باز می‌کنیم و در پایان دوباره می‌خوانیم تا نتیجه عملیات واقعی را تحویل بدهیم.

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

در این تمرین پایان خط‌های احتمالی ورودی فقط LF یعنی \n، مثل مثال‌ها، هستند؛ ورودی با \r یا \r\n داده نمی‌شود.

فعالیت شما

تابع replace_text(initial,replacement) دو رشته می‌گیرد؛ در پوشه موقت note.txt را با initial بساز، با حالت w و UTF-8 به‌طور کامل با replacement جایگزین کن، سپس فایل را بخوان و متن خوانده‌شده را برگردان. رشته خالی و پایان خط دقیقاً حفظ شوند؛ replace_text('قدیمی','نو')='نو'. هیچ فایل قبلی لازم نیست. در این تمرین پایان خط‌های احتمالی ورودی فقط LF یعنی \n، مثل مثال‌ها، هستند؛ ورودی با \r یا \r\n داده نمی‌شود.

مطالعهٔ این گام برای همه آزاد است

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

برای انجام فعالیت وارد شوید

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

import tempfile
from pathlib import Path

def replace_text(initial, replacement):
    with tempfile.TemporaryDirectory() as folder:
        path = Path(folder) / 'note.txt'
        path.write_text(initial, encoding='utf-8')
        # TODO: replace the whole file using with/open
        return path.read_text(encoding='utf-8')