عملیات ورودی/خروجی فایل (I/O) یک مهارت اساسی است که هر کس باید با آن آشنا باشد. چه بخواهید یک اسکریپت شخصی ساده ایجاد کنید و چه بخواهید وارد حوزه علوم داده شوید، عملیات I/O فایل یک نیاز مشترک است که خوشبختانه پیادهسازی آسانی دارد. در این مقاله با شیوه خواندن و نوشتن فایل در پایتون آشنا میشویم. پس از کسب آشنایی با این مهارت، به بررسی برخی ملاحظات طراحی جهت جلوگیری از افتادن در دامهای رایج میپردازیم.
باز کردن فایلها در پایتون
پیش از آن که شروع به خواندن و نوشتن فایلها بکنیم، نخستین گام این است که عملاً فایل را باز کنیم. به این منظور از تابع ()open استفاده میکنیم که یک اشارهگر فایل ایجاد میکند. این اشارهگر در یک متغیر ذخیره میشود. ما باید روشی که قصد داریم با فایل تعامل پیدا کنیم را مشخص سازیم. چهار روش برای تعامل با یک فایل وجود دارند که شامل خواندن (r)، نوشتن (w)، الحاق (a) و ایجاد (x) میشوند.
در بقیه این راهنما روی مباحث خواندن، نوشتن و الحاق تمرکز میکنیم. بنابراین به بررسی نمونه کد زیر میپردازیم:
filename="app.log" with open(filename,"r")asf: print(f) # <_io.TextIOWrapper name='app.log' mode='r' encoding='cp1252'> |
ابتدا باید نام فایل را به یک متغیر به نام filename انتساب دهیم. سپس از کلیدواژه with همراه با تابع ()open برای ایجاد اشارهگر خواندن فایل که به صورت f درون بلوک کد مورد اشاره قرار میگیرد، استفاده میکنیم.
توجه کنید که پرینت کردن f موجب پرینت شدن فایل نمیشود، بلکه اطلاعات اشارهگر پرینت میشود. هدف از استفاده از with دور زدن مدیریت اشارهگر فایل است. فراخوانی مستقیم ()open هیچ مشکلی ندارد، اما در ادامه باید زمانی که کارتان با فایل پایان یافت، اشارهگر را ببندید.
f=open("app.py","r") print(f) f.close() |
با استفاده از with، اشارهگر به صورت خودکار در انتهای بلوک بسته و کار ذخیره میشود.
خواندن فایل در پایتون
روشهای زیادی برای خواندن از یک فایل وجود دارد. پیش از انتخاب یک راهبرد، دو سؤال عمده وجود دارند که باید پاسخ دهید:
- آیا به صورت ژنریک با این فایل رفتار خواهیم کرد؟
- آیا همه فایل را میخوانیم یا صرفاً بخش خاصی از آن را خواهیم خواند؟
در این بخش با فایلها به صورت ژنریک رفتار میکنیم. کافی است بدانیم که برخی کتابخانهها وجود دارند که برای مدیریت بهتر انواع خاصی از فایل مانند JSON یا CSV طراحی شدهاند.
سه متد برای خواندن ژنریک یک فایل وجود دارد:
- متد ()read کل فایل یا در صورت تعیین تعداد بایت، تا تعداد بایت مشخصشده را بازگشت میدهد.
- متد ()readine یک خط منفرد یا در صورت تعیین تعداد بایتها تا آن خط را بازگشت میدهد.
- متد ()readlines کل فایل یا در صورت تعیین تعداد فایل، مقدار مشخصشده را بازگشت داده و به لیستی از خطوط افراز میکند.
اگر قصد دارید یک دستور منفرد مانند print را اجرا کنید، در این صورت متد ()read به طور کلی کافی است. با این حال اگر قصد دارید با دادههای خوانده شده کار کنید، در این صورت متد ()readines به تجزیه فایل کمک میکند:
with open("app.log","r")asf: print(f.read())# will print the entire file lines=f.readlines() forline inlines: print(line)# will print one line at a time |
نوشتن فایل در پایتون
برخلاف خواندن فایل، دو حالت برای نوشتن یک فایل وجود دارد. اگر هدف شما از نوشتن فایل این است که با آن مانند یک فایل جدید رفتار کنید در این صورت از حالت نوشتن (w) استفاده کنید. این کار موجب پاک شدن همه محتوای موجود در فایل میشود. اگر میخواهید محتوای موجود را حفظ کنید در این صورت از حالت الحاق (a) استفاده کنید تا محتوای جدید در انتهای فایل نوشته شود.
دو متد برای نوشتن وجود دارد که شامل write و writelines است. از ()write برای یک رشته منفرد و از ()writelines برای یک لیست از رشتهها استفاده میکنیم. این متد مانند ()readlines یک لیست از خطوط بازگشت میدهد:
one_line="Hello World" multiple_lines=["Hello World","Nice to Meet You"] with open("app.log","w")asf: f.write(one_line) f.writelines(multiple_lines) |
سخن پایانی
فهرست کارهایی که میتوان روی فایلها در پایتون انجام داد بسیار بیشتر از مواردی است که در این نوشته بررسی کردیم، با این حال مطالب ارائه شده در این راهنما بخش عمدهای از مبانی کار را پوشش میدهند.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون
- آموزش کامل برنامهنویسی پایتون (Python)
- مجموعه آموزشهای برنامهنویسی
- پایتون چیست — راهنمای جامع
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
==
«میثم لطفی» دانشآموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقهمندیهایش در رشتههای برنامهنویسی، کپیرایتینگ و محتوای چندرسانهای، در زمینه نگارش مقالاتی با محوریت نرمافزار نیز با مجله فرادرس همکاری دارد.
بر اساس رای 12 نفر
آیا این مطلب برای شما مفید بود؟