یکی از وظایف پرکاربرد در برنامهنویسی، خواندن و نوشتن اطلاعات در فایلها است. پایتون از ابزارها و توابع بسیار قدرتمندی برای انجام این کارها پشتیبانی میکند. در این مقاله، با روشها و تکنیکهای خواندن و نوشتن فایل در پایتون آشنا میشویم.
خواندن و نوشتن فایل در پایتون
قبل از هر عملیاتی بر روی فایل، ابتدا باید آن را باز کنیم. برای این کار، میتوانیم از تابع open()
استفاده کنیم. این تابع یک فایل را باز میکند و یک شیء از فایل را برگردانده میکند. این تابع حداقل دو پارامتر را میپذیرد: نام فایل و حالت باز کردن فایل. حالت میتواند "r"
برای خواندن (باز کردن فایل به عنوان فایل متنی)، "w"
برای نوشتن (باز کردن فایل برای نوشتن) یا "a"
برای افزودن (باز کردن فایل برای افزودن داده به آن) باشد. به عنوان مثال:
# باز کردن یک فایل برای خواندن
file = open("example.txt", "r")
# باز کردن یک فایل برای نوشتن (فایل واجد شرایط برای نوشتن خواهد شد)
file = open("example.txt", "w")
# باز کردن یک فایل برای افزودن
file = open("example.txt", "a")
باز کردن یک فایل به شما امکان میدهد با آن تعامل کنید. پس از اتمام کار با فایل، بهتر است آن را ببندید تا منابع سیستم را آزاد کنید. برای بستن یک فایل، میتوانید از متد close()
روی شیء فایل استفاده کنید:
file.close()
خواندن اطلاعات از یک فایل
بعد از باز کردن یک فایل برای خواندن و نوشتن فایل در پایتون، میتوانید از توابع مختلفی برای خواندن اطلاعات از آن استفاده کنید. دو تابع مهم برای خواندن فایلها در پایتون عبارتند از:
read()
: این تابع تمام محتوای فایل را به صورت یک رشته برمیگرداند.readline()
: این تابع یک خط از فایل را به صورت یک رشته برمیگرداند و به خط بعدی منتقل میشود.
به عنوان مثال، فرض کنید یک فایل به نام example.txt
داریم که در آن متن زیر ذخیره شده است:Copy code
این یک متن تست است.
این خط دیگری از متن تست است.
میتوانیم از توابع read()
و readline()
برای خواندن این متنها استفاده کنیم:
# باز کردن فایل برای خواندن
file = open("example.txt", "r")
# خواندن تمام محتوای فایل به صورت یک رشته
content = file.read()
print(content)
# باز کردن مجدد فایل برای خواندن خط به خط
file.seek(0) # بازگرداندن نشانگر فایل به ابتدا
line1 = file.readline()
line2 = file.readline()
print(line1)
print(line2)
# بستن فایل
file.close()
خروجی این کد به شکل زیر خواهد بود:
این یک متن تست است.
این خط دیگری از متن تست است.
این یک متن تست است.
این خط دیگری از متن تست است.
خواندن خط به خط با حلقهها
یک روش رایج برای خواندن فایل به صورت خط به خط، استفاده از حلقه for
است. با این حلقه میتوانیم به ترتیب هر خط از فایل را بخوانیم و روی آن عملیاتهای مختلفی انجام دهیم. به عنوان مثال:
# باز کردن فایل برای خواندن
file = open("example.txt", "r")
# خواندن فایل خط به خط با استفاده از حلقه
for line in file:
print(line)
# بستن فایل
file.close()
این حلقه تا زمانی که تمام خطهای فایل خوانده نشده باشند ادامه مییابد و هر خط را به عنوان یک رشته به متغیر line
اختصاص میدهد. این روش به خصوص برای خواندن فایلهای بزرگ بسیار مفید است چرا که بهینه بوده و در حافظه صرفهجویی میکند.
نوشتن اطلاعات در یک فایل
برای نوشتن اطلاعات در یک فایل، باید فایل را با حالت "w"
(نوشتن) یا "a"
(افزودن) باز کنید و سپس از تابع write()
برای نوشتن دادهها استفاده کنید. متد write()
یک رشته را به عنوان ورودی میپذیرد و آن را به فایل اضافه میکند. به عنوان مثال:
# باز کردن فایل برای نوشتن
file = open("output.txt", "w")
# نوشتن رشتهها به فایل
file.write("این یک مثال است.\n")
file.write("این خط دیگری از مثال است.\n")
# بستن فایل
file.close()
در این مثال، دو خط به فایل output.txt
اضافه کردیم. با استفاده از \n
میتوانید یک خط جدید ایجاد کنید.
نوشتن اطلاعات با استفاده از حلقهها
مانند خواندن، میتوانید از حلقه for
برای نوشتن اطلاعات در فایل استفاده کنید. این روش به شما امکان میدهد دادهها را به صورت پویا به فایل اضافه کنید. به عنوان مثال:
# باز کردن فایل برای نوشتن
file = open("output.txt", "w")
# لیستی از رشتهها
lines = ["این یک مثال است.\n", "این خط دیگری از مثال است.\n"]
# نوشتن رشتهها به فایل با استفاده از حلقه
for line in lines:
file.write(line)
# بستن فایل
file.close()
مدیریت فایلها با استفاده از with
یک روش بهتر برای مدیریت فایلها در پایتون استفاده از with
است. این رویکرد به شما این امکان را میدهد که بعد از اتمام کار به صورت خودکار فایل را ببندید . با استفاده از with
نیازی به بستن دستی فایل نیست. این به شما کمک میکند تا کدتان تمیزتر و ایمنتر باشد.
# با استفاده از with فایل به طور خودکار بسته میشود
with open("example.txt", "r") as file:
content = file.read()
print(content)
# اینجا فایل به طور خودکار بسته شده است
خطاها در خواندن و نوشتن فایل در پایتون
در کار با فایلها، ممکن است با خطاها مواجه شوید. برای مدیریت خطاها، میتوانید از بلوک try
و except
استفاده کنید. به عنوان مثال:
try:
# باز کردن فایل برای خواندن
file = open("example.txt", "r")
# خواندن تمام محتوای فایل
content = file.read()
print(content)
except FileNotFoundError:
print("خطا: فایل یافت نشد")
finally:
# بستن فایل
file.close()
در این مثال، از بلوک try
برای باز کردن فایل و خواندن محتوا استفاده گردیده است. در صورتی که فایل وجود نداشته باشد، خطا FileNotFoundError
ایجاد میشود و بلوک except
اجرا میشود. در هر صورت، بلوک finally
برای بستن فایل به کار میرود تا منابع آزاد شوند.