✍️ متد read تمام متن باقیمانده فایل را به شکل یک رشته برمیگرداند. این رشته فقط کلمات نیست؛ فاصله، خط خالی و نویسه پایان خط هم داخلش هستند. اگر روی متن strip اجرا کنی، داری داده را تغییر میدهی؛ این کار فقط وقتی درست است که قرارداد حذف فاصلههای دو سر را خواسته باشد.
مثلاً متن 'الف\nب' سه بخش دیداری دارد: الف، رفتن به خط بعد، و ب. وقتی با repr نمایش داده شود، نویسه پایان خط به صورت \n دیده میشود. حالا این کد مستقل را ردگیری کن:
import tempfile
from pathlib import Path
with tempfile.TemporaryDirectory() as folder:
path = Path(folder) / 'note.txt'
path.write_text('سلام\nدنیا\n', encoding='utf-8')
with open(path, encoding='utf-8') as file:
text = file.read()
print(repr(text))
آخرین پایان خط هم بخشی از محتوای نوشتهشده است. در این نمونه پایان خطها LF یعنی \n هستند و read پایان خط اضافه یا کم نمیکند. خواندن متنی پیشفرض میتواند پایان خط ویندوزی \r\n را به \n تبدیل کند. خطای رایج، اشتباه گرفتن نمایش repr با محتوای واقعی است؛ نمایش برای آشکار کردن نویسههای پنهان از بکاسلش استفاده میکند. گزینهای را انتخاب کن که هم پایان خط میانی و هم پایان خط آخر را نگه دارد.
فعالیت شما
نمایش repr متن خواندهشده را انتخاب کن؛ فایل دقیقاً سلام، پایان خط، دنیا و پایان خط دارد و هیچ strip اجرا نشده است. پایان خط مثال LF یعنی \n است.