مدیریت فایلهای متنی در پایتون
پایتون ابزارهای ساده و در عین حال قدرتمندی برای کار با فایلها در اختیار دارد. با استفاده از این امکانات، میتوان فایلهای متنی را باز کرد، از آنها خواند، در آنها نوشت یا محتوایشان را ویرایش کرد. در این بخش، به شیوههای مختلف مدیریت فایلهای متنی در پایتون میپردازیم.
باز کردن فایل
برای شروع کار با یک فایل، ابتدا باید آن را با تابع open()
باز کنید. این تابع مسیر فایل را به عنوان آرگومان اول، و حالت باز شدن فایل را به عنوان آرگومان دوم دریافت میکند. اگر حالت مشخص نشود، فایل به صورت پیشفرض در حالت خواندن ("r"
) باز میشود.
file = open("example.txt") # حالت پیشفرض: خواندن (r)
file = open("example.txt", "r") # خواندن
file = open("example.txt", "w") # نوشتن (بازنویسی)
file = open("example.txt", "a") # افزودن به انتهای فایل
file = open("example.txt", "rb") # حالت باینری (خواندن فایلهای غیرمتنی)
نکته: اگر فایل در مسیر جاری (همان مسیر اسکریپت) باشد، فقط نام فایل کافی است. در غیر این صورت، باید مسیر کامل را وارد کنید.
خواندن فایل
پس از باز کردن فایل در حالت خواندن، میتوان با استفاده از متد read()
تمام محتوای آن را به صورت یک رشته دریافت کرد:
file = open("example.txt", "r")
content = file.read()
print(content)
file.close()
برای خواندن بخش خاصی از فایل (بر حسب بایت)، میتوان عددی را به متد read()
داد:
file = open("example.txt", "r")
print(file.read(10)) # خواندن 10 کاراکتر اول
print(file.read(5)) # سپس 5 کاراکتر بعدی
file.close()
اگر به انتهای فایل برسید، تلاش برای خواندن بیشتر فقط یک رشتهٔ خالی برمیگرداند.
خواندن خط به خط
برای خواندن فایل به صورت خط به خط، میتوان از readlines()
استفاده کرد که خروجی آن لیستی از خطوط است:
file = open("example.txt", "r")
lines = file.readlines()
print(lines)
file.close()
همچنین میتوان مستقیماً با استفاده از یک حلقه for
از روی خطوط فایل پیمایش کرد:
file = open("example.txt", "r")
for line in file:
print(line)
file.close()
نکته: دستور print()
به طور پیشفرض یک خط جدید اضافه میکند، بنابراین خطوط فایل ممکن است با یک فاصلهٔ اضافه چاپ شوند.
نوشتن در فایل
برای نوشتن در یک فایل، آن را با حالت "w"
(بازنویسی) یا "a"
(افزودن) باز کرده و از متد write()
استفاده میکنیم:
file = open("newfile.txt", "w")
file.write("This has been written to a file")
file.close()
سپس میتوان فایل را باز کرده و محتوای آن را مشاهده کرد:
file = open("newfile.txt", "r")
print(file.read())
file.close()
نکته: باز کردن فایل در حالت "w"
باعث پاک شدن محتوای قبلی آن میشود. اگر فایل وجود نداشته باشد، ایجاد میشود.
مقدار بازگشتی write()
متد write()
تعداد کاراکترهای نوشتهشده را به عنوان خروجی بازمیگرداند:
msg = "Hello world!"
file = open("newfile.txt", "w")
written = file.write(msg)
print(written) # خروجی: 12
file.close()
بستن فایلها به شکل ایمن
بستن فایل بعد از اتمام کار با آن ضروری است تا منابع سیستم آزاد شوند. برای اطمینان از بسته شدن فایل، میتوان از ساختار try...finally
یا روش امنتر with
استفاده کرد:
try:
f = open("example.txt", "r")
print(f.read())
finally:
f.close()
و یا با استفاده از with
:
with open("example.txt", "r") as f:
print(f.read())
نکته: در روش دوم، فایل بهطور خودکار پس از پایان بلاک with
بسته میشود، حتی اگر خطا رخ دهد.