رفتن به مطلب
محفل من
Mostafa

آموزش کار با فایل در Python

پست های پیشنهاد شده

فایل ها در چرخه یک برنامه زیاد دیده میشوند و یک برنامه نویس خوب همیشه باید توانایی کار با فایل های مختلف را داشته باشد. در این مقاله قصد داریم نحوه کار با فایل در پایتون (Python File Handling) را بررسی کرده و آموزش دهیم.

 

در این مقاله ما با پایتون نسخه ۳.۵ کار خواهیم کرد؛ در نسخه ۲.۷ پایتون نیز روند کار به صورت مشابه هست و تفاوت چندانی ندارد.

 

برای کار با فایل در پایتون نیاز به استفاده و Import کردن هیچ ماژول اضافی و مازادی نداریم.

برای کار با فایل باید از شی File در پایتون استفاده کنیم. این شی (Object) اطلاعاتی از فایل و توابعی ساده ای در اختیارمان میگذارد تا بتوانیم با فایل ها به راحتی کار کنیم.

اولین کار برای انجام عملیات های مختلف روی یک فایل، این است که یک شی از File مورد نظر خود داشته باشیم. برای این کار به طور مستقیم از تابع open() استفاده میکنیم.

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

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

حالت (mode) های مختلف باز کردن یک فایل

همانطور که میدانید حالت های مختلفی در هنگام باز کردن یک فایل وجود دارد که در زیر انواع آن را بررسی میکنیم.

  • r : خواندن (شروع از ابتدای فایل)
  • r+ : خواندن و نوشتن (شروع از ابتدای فایل)
  • w : ایجاد فایل برای نوشتن (شروع از ابتدا)
  • w+ : ایجاد فایل برای نوشتن و خواندن (شروع از ابتدا)
  • a : خواندن (شروع از انتها)
  • a+ : خواندن و نوشتن (شروع از انتها)

در دو مورد حالت w در صورتی که فایلی از قبل وجود داشته باشد، فایل را پاک کرده و یک فایل جدید ایجاد میکند.

در دو حالت a در صورتی که فایلی وجود داشته باشد، آنرا باز کرده و از انتهای آن شروع به انجام عملیات میکند و اگر فایلی وجود داشته باشد، یک فایل خالی ایجاد میکند.

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

 

توجه داشته باشید که در هنگام صدا زدن تابع open() در صورتی که آرگومان دوم مشخص نشده و صرفاً نام و مسیر فایل به عنوان ورودی داده شده باشد، فایل به طور پیشفرض در حالت r و برای خواندن ایجاد خواهد شد.

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

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

برای درک بهتر، در ادامه این آموزش از یک فایل کمکی که محتویات آن به صورت زیر است استفاده خواهیم کرد.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

در ابتدای خط) به معنای خروجی حاصل از اجرای کد می باشد.

 

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

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

تابع read

این تابع که می بایست روی متغیر شی فایل صدا زده شود، یک رشته متنی بزرگ به ما برمیگرداند که حاوی تمام محتویات فایل ماست.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

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

تابع read() یک آرگومان ورودی به صورت دلخواه میتواند داشته باشد؛ این آرگومان از نوع عددی بوده و مشخص میکند که چه تعداد کاراکتر خوانده شود.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

تابع readline

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

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

توجه کنید که در انتهای هر خط فایل، کاراکتر سطر جدید (\n) وجود دارد و تابع print که ما در مثال استفاده میکنیم نیز پس از هر بار چاپ کردن، به سطر جدید میرود؛ به همین دلیل است که در نتیجه کد فوق، برای هر خط، دو بار به سطر جدید میرویم.

تابع readlines

هنگامی که این تابع را روی فایل استفاده میکنیم، به عنوان خروجی تابع، یک لیست داریم که شامل خطوط موجود در فایل هست. یعنی هر عضو این لیست معادل یک خط در درون فایل خواهد بود.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

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

یک روش ساده برای خواندن خط به خط یک فایل در پایتون، استفاده از for یا به عبارت بهتر for each می باشد.

در صورتی که متغیر فایل را در یک حلقه استفاده کنیم، مشابه آن است که تابع readlines() را روی آن صدا زده و لیست نتیجه را به حلقه for داده ایم.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

بستن فایل پس از کار با فایل

همیشه دقت کنید که پس از اینکه کارتان با فایل باز شده تمام شد، با صدا زدن تابع close() روی شی فایل، آن را ببندید. هر چند که پس از اتمام اسکریپت، فایل به صورت خودکار بسته میشود، اما این کار به آزاد شدن زودتر منابع کمک میکند.

همچنین اگر در هنگام نوشتن یک فایل باشید و نتوانید در انتهای کار آن را به درستی ببندید، چیزی در فایل ذخیره نخواهد شد!

  • file.close()

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

برای نوشتن فایل در زبان python دو تابع اصلی وجود دارد.

تابع write

این تابع یک رشته را به عنوان ورودی گرفته و درون فایل می نویسد.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

با اجرای قطعه کد بالا، درون فایل text2.txt که در کنار برنامه وجود داشته یا ایجاد شده است، صرفاً عبارت معروف hello world! نوشته میشود.

 

تابع writelines

این تابع یک لیست از رشته های متنی گرفته و آن ها را به ترتیب درون فایل مورد نظر می نویسد.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

اضافه کردن محتوا به محتوای موجود فایل در پایتون

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

در صورتی که بخواهیم به محتوای فعلی یک فایل، محتوای جدید اضافه کنیم، می بایست فایل را در حالت a (ابتدای append) باز کرده و سپس عملیات نوشتن روی آن را انجام دهیم.

 

حذف فایل در پایتون

برای حذف کردن یک فایل در زبان پایتون، می بایست ماژول os را به برنامه خود اضافه کنیم.

برای این کار کد زیر را در ابتدای برنامه خود می نویسیم.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

این ماژول یک تابع به نام remove() داشته که با صدا زدن آن بر روی ماژول و دادن نام فایل به عنوان ورودی، فایل مورد نظر حذف شود. (اگر فایل در کنار برنامه نباشد می توان مسیر فایل را به عنوان ورودی داد.)

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

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

برای این کار میتوانیم از توابع دیگری که در ماژول os وجود دارد استفاده کرده و مانند قطع کد زیر عملیات حذف را انجام دهیم.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
    • 1 Posts
    • 3 Views
    • 1 Posts
    • 3 Views
    • 1 Posts
    • 4 Views
    • 1 Posts
    • 4 Views
    • 1 Posts
    • 9 Views
    • 1 Posts
    • 7 Views
    • 1 Posts
    • 9 Views

  • سفارش پروژه برنامه نویسی

×
×
  • اضافه کردن...