مفاهیم پایه پایتون ; کار با فایل

بازدید: 447 بازدید

وقتی میخواهیم یک پروژه کاربردی را پیاده سازی کنید، باید بتوانیم با فایل های مختلفی که در اطراف این پروژه هستند و یا قرار است باشند، کار کنید. شما می تواند به وسیله پایتون محتوای یک فایل را بخوانید و یا در آن فایل محتوایی بنویسد. کار با فایل در پایتون به مراتب از زبان های برنامه نویسی آسانتر دیگر است.

سین:

چگونه یک فایل متنی را در پایتون باز کنیم؟

جیم:

کار با فایل، زمانی ممکن خواهد شد که آن را در پایتون باز کرده باشید. برای باز کردن فایل در پایتون از تابع open استفاده می شود. برای مثال:

myfile = open(“filename.txt”)

آرگومان اولی که تابع open به عنوان ورودی دریافت میکند، مسیر فایل خواهد بود. اگر مسیر فایل در دایرکتوری قرار دارد که فایل پایتون را در آن اجرا کرده اید، کافی است صرفا نام فایل را به عنوان آرگومان اول به تابع open بدهید.

شما میتوانید نوع باز کردن فایل را از طریق ارسال نمودن آرگومان دوم به تابع open مشخص کنید.

  • ارسال r به معنی باز کردن فایل در حالت فقط خواندنی است. این حالت، همان پیش فرض خواندن فایل در پایتون است.
  • ارسال w به معنی باز کردن فایل برای نوشتن محتوا در آن است.
  • ارسال a به معنی افزودن محتوای جدید به انتهای محتوا های موجود در فایل است.
  • افزودن b به هر یکی از حالت ها ذکر شده در بالا، باعث می شود فایل به فرمت باینری خوانده شود، این حالت برای فایل های غیر متنی کاربرد دارد

open(“file.txt”, “r”)

open(“file.txt”)

open(“filename2.txt”, “w”)

open(“filename3.txt”, “wb”)

در انتهای کار باید فایلی که باز کرده اید را ببندید. برای این منظور نیز از تابع close استفاده می شود . برای مثال :

file = open(“filename3.txt”, “w”)

file.close()

سین:

چگونه محتوای یک فایل را در پایتون بخوانیم؟

جیم:

محتوای یک فایل متنی که به وسیله تابع open باز شده باشد، می تواند با متد read خوانده شود. متد ها به مانند توابع هستند اما فقط برای یک شی اجرا می شوند. برای مثال کد زیر یک فایل متنی به نام p30script.txt را باز کرده، محتوای آن را می خواند و در متغیر user قرار می دهد. سپس به وسیله تابع print محتوای موجود در متغیر user در صفحه خروجی نمایش داده می شود. در انتها برای آزاد سازی رم، این فایل را می بندیم:

 

user = open(“p30script.txt”, “r”)

cont = user.read()

print(user)

user.close()

سین:

آیا می شود مقدار بخصوصی از یک فایل را در پایتون خواند؟

چگونه خطا های جداگانه از یک فایل متنی را در پایتون بخوانیم؟

جیم:

بله امکان محدود سازی read وجود دارد. شما می توانید با قرار دادن یک عدد به عنوان آرگومان در ورودی read ، صرفا مقدار خاصی از یک فایل را بخوانید. برای مثال شما 1000 فایل متنی دارید که می دانید در 50 بایت اول آن، کد های تخفیف قرار دارد و شما می خواهید صرفا آن 50 بایت را بخوانید . در این صورت می بایست از read به صورت زیر استفاده کنید:

user = open(“p30script.txt“, “r”)

discount=user.read(50)

 

خواند تمام محتوای یک فایل بدون ساختار ، همواره مورد نیاز ما نیست. شاید بخواهید تک تک خط ها را به صورت جداگانه بخوانید. در این حالت از متد readline استفاده می شود. اجرای readline برای یک فایل،یک لیست را در اختیار ما قرار میدهد که هر کدام از اعضای این لیست شامل یک خط از فایل متنی هستند. برای مثال:

 

کار-با-فایل-در-پایتون

سین:

چگونه در پایتون محتوایی در فایل بنویسیم؟

جیم:

برای نوشتن در فایل ها از متد write استفاده می شود. آرگومان ورودی این متد/تابع ، جایگزین متن های قبلی موجود در فایل شما خواهد شد. به عبارتی یک فایل فقط با متن ارسالی شما وجود خواهد داشت. برای مثال فایل موجود در مثال قبلی را باز کرده و متنی در آن می نویسیم. البته به صورت کلی اگر فایلی با روش w باز شود، عملا محتوای قبلی آن حذف خواهد شد.

کار-با-فایل-در-پایتون-3

تا به اینجای قسمت کار با فایل در پایتون، همواره مجبور بودیم در انتهای کار، فایل را ببندیم. اما متدهای بهینه دیگری نیز وجود دارند، پایتون باهوش تر از این حرف هاست. شما می توانید به وسیله دستور with یک فایل را بخوانید و آن را به وسیله as به یک متغیر نسبت دهید و در آخر نگران بستن فایل نباشد. چرا که فایل در انتهای اجرای with به خودی خود بسته خواهد شد.

برای مثال یک فایل با متن فارسی داریم و می خواهید متن آن را در خروجی ، چاپ کنید. روش کار به صورت زیر است:

 

به encoding=”utf8″ دقت کنید. اگر این آرگومان را به تابع open ندهید، برای خواندن فایل متنی حاوی کاراکتر فارسی با خطایی شبیه خطای زیر روبرو خواهید شد:

UnicodeDecodeError: ‘charmap’ codec can’t decode byte 0x81 in position 66: character maps to <undefined>

 

در این قسمت سعی شد مروری بر کار بر فایل ها در پایتون انجام گردد. از این که با ما همراه بودید،سپاسگزاریم.

 

ادامه مطلب