فایل متنی در پایتون
در واقع، در این درس فایل متنی در پایتون را از پایه و با مثال یاد میگیرید.
بنابراین تا اینجا هر دادهای که داشتید، داخل خود کد بود یا از کاربر گرفته میشد. مشکل این است که به محض تمام شدن برنامه، همهچیز پاک میشود.
همچنین، برای اینکه داده بماند، باید جایی ذخیرهاش کنید. سادهترین جا، یک فایل متنی است.
خواندن فایل
with open("notes.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
به این ترتیب، سه چیز در این خط هست که باید توضیح دهم.
علاوه بر این، حرف "r" یعنی حالت خواندن. عبارت encoding="utf-8" برای ما فارسیزبانها حیاتی است؛ بدونش در ویندوز متن فارسی به هم میریزد. در تدریسهایم مدام این مشکل را دیدهام.
در نهایت، و مهمتر از همه، with. فایل بعد از کار باید بسته شود و with این کار را خودکار انجام میدهد، حتی اگر وسط کار خطایی رخ دهد. دقیقاً همان کاری که در درس مدیریت خطا با finally انجام میدادید.
خواندن خط به خط
with open("notes.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())
در واقع، این روش را ترجیح بدهید. تابع read کل فایل را یکجا در حافظه میریزد؛ اگر فایل یک گیگابایت باشد، برنامه خفه میشود. حلقه روی فایل، خط به خط میخواند.
بنابراین متد strip هم فاصلهها و کاراکتر خط جدید را از دو سر متن حذف میکند.
نوشتن در فایل
with open("notes.txt", "w", encoding="utf-8") as file:
file.write("خط اولn")
file.write("خط دومn")
همچنین، حالت "w" یک خطر جدی دارد: اگر فایل از قبل وجود داشته باشد، کل محتوایش پاک میشود و هیچ هشداری هم در کار نیست. اگر میخواهید به انتها اضافه کنید، از "a" استفاده کنید:
with open("notes.txt", "a", encoding="utf-8") as file:
file.write("خط سومn")
حالتهای باز کردن فایل
| اگر فایل نباشد | کارکرد | حالت |
| خطا میدهد | خواندن | r |
| میسازد | نوشتن از اول (پاک میکند) | w |
| میسازد | افزودن به انتها | a |
| میسازد | ساختن فایل جدید | x |
وقتی فایل نیست
FileNotFoundError: [Errno 2] No such file or directory: 'notes.txt'
به این ترتیب، این دقیقاً جایی است که درس مدیریت خطا به کار میآید:
try:
with open("notes.txt", "r", encoding="utf-8") as file:
print(file.read())
except FileNotFoundError:
print("فایل یادداشتها هنوز ساخته نشده است")
جمعبندی
در واقع، همیشه با with کار کنید، همیشه encoding="utf-8" بنویسید، و حواستان باشد که حالت w محتوای قبلی را پاک میکند.
در درس بعدی سراغ فایلهایی میرویم که ساختار جدولی دارند.
برای مطالعهی بیشتر میتوانید به مستندات رسمی پایتون سر بزنید.
این درس بخشی از دوره آموزش پایتون مقدماتی است.