آموزش خواندن و نوشتن فایلهای متنی در پایتون
در دنیای برنامهنویسی، تعامل با فایلها یکی از مهارتهای اساسی و جداییناپذیر است. شما برای ذخیره دادهها، خواندن اطلاعات از فایلهای لاگ، یا مدیریت تنظیمات نرمافزار خود نیازمند کار با فایلها هستید. در این مقاله از پای شو، به صورت جامع نحوه خواندن و نوشتن فایلهای متنی در پایتون و همچنین اصول مدیریت صحیح آنها را بررسی میکنیم.
باز کردن فایلها در پایتون
برای شروع کار با هر فایلی در پایتون، ابتدا باید آن را باز کنید. این کار با استفاده از تابع داخلی open() انجام میشود. این تابع یک شیء (Object) از فایل برمیگرداند که میتوانید عملیات مختلفی را روی آن انجام دهید.
تابع open() معمولاً دو آرگومان اصلی دریافت میکند: نام فایل و حالت (Mode) باز کردن آن.
file = open("example.txt", "r")
حالتهای مختلف (Modes) در کار با فایل
بسته به نیازی که دارید، باید فایل را در یکی از حالتهای زیر باز کنید:
-
حالت
r(Read): فقط برای خواندن. این حالت پیشفرض است. اگر فایل وجود نداشته باشد، با خطا مواجه میشوید. -
حالت
w(Write): برای نوشتن. اگر فایل وجود نداشته باشد، آن را ایجاد میکند و اگر وجود داشته باشد، محتوای قبلی را کاملاً پاک کرده و محتوای جدید را جایگزین میکند. -
حالت
a(Append): برای الحاق یا اضافه کردن محتوا. محتوای جدید را به انتهای فایل فعلی اضافه میکند و در صورت عدم وجود فایل، آن را میسازد. -
حالت
x(Create): فقط برای ایجاد فایل جدید. اگر فایل از قبل وجود داشته باشد، خطا میدهد.
خواندن فایلهای متنی
پایتون متدهای مختلفی برای خواندن محتوای یک فایل متنی در اختیار شما قرار میدهد.
۱. استفاده از ()read
متد read() کل محتوای فایل را به صورت یک رشته (String) یکپارچه میخواند.
file = open("data.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close()
۲. استفاده از ()readline و ()readlines
اگر فایل شما بزرگ است، خواندن کل آن به صورت یکجا منطقی نیست. در این شرایط میتوانید از readline() برای خواندن خط به خط، و یا از readlines() برای دریافت یک لیست از تمام خطوط استفاده کنید.
# خواندن یک خط از فایل
file = open("data.txt", "r", encoding="utf-8")
line = file.readline()
print(line)
file.close()
نکته بهینهسازی: بهترین روش برای خواندن خط به خط فایلهای حجیم در پایتون، استفاده از حلقه for به صورت مستقیم روی شیء فایل است:
file = open("data.txt", "r", encoding="utf-8")
for line in file:
print(line.strip()) # متد strip فاصلهها و خطوط خالی اضافه را حذف میکند
file.close()
نوشتن در فایلهای متنی
برای نوشتن در فایل، باید آن را در حالت w یا a باز کنید. متد اصلی برای این کار write() است.
ایجاد و نوشتن در فایل جدید
file = open("output.txt", "w", encoding="utf-8")
file.write("به سایت پای شو خوش آمدید!n")
file.write("این یک متن تستی است.")
file.close()
اضافه کردن متن به فایل موجود (Append)
برای جلوگیری از پاک شدن اطلاعات قبلی فایل، از حالت a استفاده میکنیم:
file = open("output.txt", "a", encoding="utf-8")
file.write("nاین خط به انتهای فایل اضافه شد.")
file.close()
مدیریت صحیح فایلها: استفاده از کلمه کلیدی with
در مثالهای بالا متوجه شدید که بعد از پایان کار، همواره متد close() را فراخوانی کردیم. بستن فایلها برای آزادسازی منابع سیستم بسیار مهم است. اما اگر در حین کار با فایل خطایی رخ دهد، ممکن است برنامه متوقف شده و فایل باز بماند.
بهترین روش (Best Practice) در پایتون، استفاده از ساختار with (مدیریت متون یا Context Manager) است. این ساختار تضمین میکند که فایل به طور خودکار بسته میشود، حتی اگر ارور غیرمنتظرهای رخ دهد.
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
# در اینجا فایل به صورت خودکار بسته شده است و نیازی به file.close() نیست
مدیریت خطاها در کار با فایل
از آنجا که این مطلب در بخش مدیریت خطا و فایلها قرار دارد، یادگیری ترکیب کار با فایل و بلوکهای try...except ضروری است. همواره احتمال دارد فایلی که میخواهید بخوانید وجود نداشته باشد یا دسترسی لازم برای تغییر آن را نداشته باشید.
try:
with open("missing_file.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("خطا: فایل مورد نظر پیدا نشد!")
except PermissionError:
print("خطا: شما اجازه دسترسی به این فایل را ندارید.")
except Exception as e:
print(f"یک خطای غیرمنتظره رخ داد: {e}")
نتیجهگیری
تسلط بر نحوه باز کردن، خواندن، نوشتن و بستن فایلها یکی از گامهای اساسی در یادگیری پایتون است. همیشه به یاد داشته باشید که برای کار با فایلها از ساختار with استفاده کنید تا کدهای شما تمیزتر و امنتر باشند و با استفاده از دستورات مدیریت خطا (try...except)، برنامهای مقاوم در برابر مشکلات پیشبینی نشده بنویسید.

بدون دیدگاه