در این پست مقدمات کار با فایل در پایتون را بررسی میکنیم. چگونه میتوانیم محتویات یک فایل را بخوانیم؟ چگونه در فایلی بنویسیم؟
در هر زبان برنامهنویسی، خواندن و نوشتن فایل یک ویژگی مهم محسوب میشود. بدون این ویژگی برنامه ما با فایلهای دیگر تعاملی ندارد و تنها محدود به محیط خود است.
در پایتون در نوع فایل باینری و متنی وجود دارد. اکثر فایلهایی که ما در کامپیوتر با آنها کار میکنیم نیز از نوع باینری هستند، تصاویر، فایلهای ورد (docx.)، فایلهای پایگاهدادهها (sqlite.) و بسیاری موارد دیگر. این نوع فایلها نیاز به مدیریت خاصی داشته و نوع خاصی از نرمافزار برای اجرای آنها نیاز است، مثلا برای بازکردن فایلهای pdf به یکی از نرمافزارهای رایج pdf reader نیاز دارید. در مقابل یک فایل متنی، encoding خاصی نداشته و میتوان آن را با یک ویرایشگر ساده متن باز کرد.
دوره آموزشی متن کاوی با پایتون مقدماتی (مجازی)
بازکردن فایل در پایتون
اولین تابعی که برای بازکردن فایل به آن نیاز داریم تابع open است:
file = open('filename.txt', mode)
filename نام فایلی است که میخواهید باز کنید. توجه کنید که فایل متنی در همان پوشهای باشد که برنامه پایتون شما در آن قرار دارد. در غیر این صورت باید آدرس فایل را فراهم کنید، مثلا:
'c:/filename.txt'
mode به پایتون میگوید که میخواهید با این فایل چه بکنید. چند mode برای کار کردن با فایل وجود دارد:
- ‘r’: این مورد زمانی به کار میرود که تنها میخواهید فایل را بخوانید و قرار نیست در آن تغییری ایجاد کنید. اشارهگر فایل در ابتدای آن قرار میگیرد.
- ‘+r’: این مورد زمانی استفاده میشود که میخواهید هم از فایل بخوانید و هم در آن تغییراتی ایجاد کنید. اشارهگر فایل در ابتدای آن قرار میگیرد.
- ‘w’: این مورد زمانی به کار میرود که میخواهید در فایل بنویسید. توجه داشته باشید که این مورد فایل را در صورت وجود پاک کرده و فایل جدیدی ایجاد میکند. اشارهگر فایل در ابتدای آن قرار میگیرد.
- ‘a’: این مورد فایلی باز کرده و به شما اجازه میدهد که به انتهای آن دادههای خود را اضافه کنید. اشارهگر فایل در انتهای آن قرار میگیرد.
زمانی که با فایلهای باینری مواجه هستیم، از mode های مشابه استفاده میکنیم، با این تفاوت که یک b به انتهای موارد قبل افزوده میشود، مثل ‘rb’.
چنانچه در کد پیش مشاهده کردید میتوانیم نتیجه open را که یک شی است در متغیری ذخیره کنیم.
هنگامی که فایل باز شد میتوانید با استفاده از روشهای موجود با آن تعامل کنید.
خواندن دادهها از فایل
برای این کار از متد read استفاده میکنیم. به صورت پیشفرض این متد تمام فایل را میخواند. باید توجه داشته باشید که اگر حجم فایل مورد نظر بیشتر از حافظه شما باشد، نمیتوانید یکباره به همه آن دسترسی داشته باشید.
file =open("workData.txt", "r+")
print("This is the file name: ", work_data.name)
line = work_data.read()
print(line)
نتیجه:
This is the file name: workData.txt
This data is on line 1
This data is on line 2
This data is on line 3
تابع read پارامتری دریافت میکند که از طریق آن میتوان تعداد کاراکترهای ورودی را محدود کرد:
file.read(5)
که نتیجه آن پنج کاراکتر اول فایل گشوده شده خواهد بود.
خواندن خط به خط فایل
به صورت پیشفرض متد readline خط اول فایل را باز میگرداند. اما با ارسال پارامتر به آن میتوان شماره خط مورد نظر برای خواندن را تنظیم کرد.
اگر بخواهیم فایل را خط به خط بخوانیم میتوان از متد readlines استفاده کرد.
print(file.readlines())
نتیجه به صورت لیست خواهد بود:
['This data is on line 1', 'This data is on line 2', 'This data is on line 3']
نوشتن در فایل
برای نوشتن در یک فایل میتوان از دستور write استفاده کرد:
file.write("This data is on line 4\n")
n\ نشاندهنده انتهای خط است و ادامه متن را به خط بعد منتقل میکند.
بستن فایل
بعد از اینکه کار ما با فایل تمام شد، لازم است فایل را ببندیم تا منابع مورد استفاده برای عملیات خواندن و نوشتن آزاد شود. همچنین زمانی که فایل را بستیم اطمینان داریم که تغییرات لازم روی حافظه در فایل مورد نظر ایجاد شده است. برای بستن فایل به صورت زیر عمل میکنیم:
file.colse()
بعد از این دیگر نمیتوانیم به فایل دسترسی داشته باشیم مگر اینکه آن را مجددا باز کنیم.