خواندن و نوشتن فایل در پایتون — از صفر تا صد

۳۹۳۷ بازدید
آخرین به‌روزرسانی: ۰۴ مهر ۱۴۰۲
زمان مطالعه: ۳ دقیقه
خواندن و نوشتن فایل در پایتون — از صفر تا صد

عملیات ورودی/خروجی فایل (I/O) یک مهارت اساسی است که هر کس باید با آن آشنا باشد. چه بخواهید یک اسکریپت شخصی ساده ایجاد کنید و چه بخواهید وارد حوزه علوم داده شوید، عملیات I/O فایل یک نیاز مشترک است که خوشبختانه پیاده‌سازی آسانی دارد. در این مقاله با شیوه خواندن و نوشتن فایل در پایتون آشنا می‌شویم. پس از کسب آشنایی با این مهارت، به بررسی برخی ملاحظات طراحی جهت جلوگیری از افتادن در دام‌های رایج می‌پردازیم.

باز کردن فایل‌ها در پایتون

پیش از آن که شروع به خواندن و نوشتن فایل‌ها بکنیم، نخستین گام این است که عملاً فایل را باز کنیم. به این منظور از تابع ()open استفاده می‌کنیم که یک اشاره‌گر فایل ایجاد می‌کند. این اشاره‌گر در یک متغیر ذخیره می‌شود. ما باید روشی که قصد داریم با فایل تعامل پیدا کنیم را مشخص سازیم. چهار روش برای تعامل با یک فایل وجود دارند که شامل خواندن (r)، نوشتن (w)، الحاق (a) و ایجاد (x) می‌شوند.

در بقیه این راهنما روی مباحث خواندن، نوشتن و الحاق تمرکز می‌کنیم. بنابراین به بررسی نمونه کد زیر می‌پردازیم:

1filename = "app.log"
2with open(filename, "r") as f:
3  print(f)
4  # <_io.TextIOWrapper name='app.log' mode='r' encoding='cp1252'>

ابتدا باید نام فایل را به یک متغیر به نام filename انتساب دهیم. سپس از کلیدواژه with همراه با تابع ()open برای ایجاد اشاره‌گر خواندن فایل که به صورت f درون بلوک کد مورد اشاره قرار می‌گیرد، استفاده می‌کنیم.

توجه کنید که پرینت کردن f موجب پرینت شدن فایل نمی‌شود، بلکه اطلاعات اشاره‌گر پرینت می‌شود. هدف از استفاده از with دور زدن مدیریت اشاره‌گر فایل است. فراخوانی مستقیم ()open هیچ مشکلی ندارد، اما در ادامه باید زمانی که کارتان با فایل پایان یافت، اشاره‌گر را ببندید.

1f = open("app.py", "r")
2print(f)
3f.close()

با استفاده از with، اشاره‌گر به صورت خودکار در انتهای بلوک بسته و کار ذخیره می‌شود.

خواندن فایل در پایتون

روش‌های زیادی برای خواندن از یک فایل وجود دارد. پیش از انتخاب یک راهبرد، دو سؤال عمده وجود دارند که باید پاسخ دهید:

  • آیا به صورت ژنریک با این فایل رفتار خواهیم کرد؟
  • آیا همه فایل را می‌خوانیم یا صرفاً بخش خاصی از آن را خواهیم خواند؟

در این بخش با فایل‌ها به صورت ژنریک رفتار می‌کنیم. کافی است بدانیم که برخی کتابخانه‌ها وجود دارند که برای مدیریت بهتر انواع خاصی از فایل مانند JSON یا CSV طراحی شده‌اند.

سه متد برای خواندن ژنریک یک فایل وجود دارد:

  • متد ()read کل فایل یا در صورت تعیین تعداد بایت، تا تعداد بایت مشخص‌شده را بازگشت می‌دهد.
  • متد ()readine یک خط منفرد یا در صورت تعیین تعداد بایت‌‌ها تا آن خط را بازگشت می‌دهد.
  • متد ()readlines کل فایل یا در صورت تعیین تعداد فایل، مقدار مشخص‌شده را بازگشت داده و به لیستی از خطوط افراز می‌کند.

اگر قصد دارید یک دستور منفرد مانند print را اجرا کنید، در این صورت متد ()read به طور کلی کافی است. با این حال اگر قصد دارید با داده‌های خوانده شده کار کنید، در این صورت متد ()readines به تجزیه فایل کمک می‌کند:

1with open("app.log", "r") as f:
2  print(f.read()) # will print the entire file
3
4  lines = f.readlines()
5  for line in lines:
6    print(line) # will print one line at a time

نوشتن فایل در پایتون

برخلاف خواندن فایل، دو حالت برای نوشتن یک فایل وجود دارد. اگر هدف شما از نوشتن فایل این است که با آن مانند یک فایل جدید رفتار کنید در این صورت از حالت نوشتن (w) استفاده کنید. این کار موجب پاک شدن همه محتوای موجود در فایل می‌شود. اگر می‌خواهید محتوای موجود را حفظ کنید در این صورت از حالت الحاق (a) استفاده کنید تا محتوای جدید در انتهای فایل نوشته شود.

دو متد برای نوشتن وجود دارد که شامل write و writelines است. از ()write برای یک رشته منفرد و از ()writelines برای یک لیست از رشته‌ها استفاده می‌کنیم. این متد مانند ()readlines یک لیست از خطوط بازگشت می‌دهد:

1one_line = "Hello World"
2multiple_lines = ["Hello World","Nice to Meet You"]
3with open("app.log", "w") as f:
4  f.write(one_line)
5  f.writelines(multiple_lines)

سخن پایانی

فهرست کارهایی که می‌توان روی فایل‌ها در پایتون انجام داد بسیار بیش‌تر از مواردی است که در این نوشته بررسی کردیم، با این حال مطالب ارائه شده در این راهنما بخش عمده‌ای از مبانی کار را پوشش می‌دهند.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۳۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
code-85
۴ دیدگاه برای «خواندن و نوشتن فایل در پایتون — از صفر تا صد»

سلام ممنون از توضیحاتتون
یک سوال داشتم اونم اینکه من وقتی میخوام رایت کنم به درستی مطالب رایت میشه ولی هر سری که رایت رو اجرا میکنم اطلاعات رایت شده قبلی پاک میشه لطفا راهنمایی کنید چطور مطالب رو اضافه کنم به فایل تکست بدون اینکه مطالب قبلیش پاک بشه

سلام من وقتی متن رو از فایل اکسل فراخوانی میکنم متن های انگلیسی رو برام درست میاره ولی متون فارسی رو اصلا نمیاره و خالی میاره

سلام من میخوام توی یک فایل با پایتون متن فارسی بنویسم ولی ارور encodeمیده چی کار کنم؟لطفا

سلام!جامع و قشنگ !خلاصه ومفید!دمتون گرم!

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *