✍️ برای جایگزینی کامل یک یادداشت، حالت 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 داده نمیشود.