مدیریت و کار با فایل ها از قسمت های مهم هر برنامه ای است. از همین رو توابع متعددی برای کار با فایل ها در پایتون شامل ایجاد، خواندن، بروزرسانی و حذف فایل ها در این زبان وجود دارد. اصلی ترین تابع برای کار با فایل ها در پایتون تابع()open
است که دو پارامتر می گیرد: نام فایل و mode (حالت دسترسی). برای باز کردن فایل ها چهار حالت دسترسی (mode) وجود دارد:
همچنین می توانید مشخص کنید که فایل به صورت باینری (دودویی) یا متنی در دسترس قرار گیرد:
حالا که با انواع حالت های دسترسی آشنا شده ایم، نوبت به استفاده عملی از آن ها در چند مثال مختلف است. اگر بخواهیم یک فایل را فقط برای خواندن باز کنیم می توانیم فقط نام فایل را به تابع ()open
بدهیم:
f = open("demofile.txt")
در واقع کد بالا معادل این کد است:
f = open("demofile.txt", "rt")
همانطور که قبلا گفته بودم حرف r
برای read (خواندن) و حرف t
برای دسترسی به صورت متنی (text) است اما اگر یادتان باشد هر دوی این موارد پیش فرض بودند بنابراین نیازی به ذکر آن ها نیست. همچنین حواستان باشد که فایل درخواست شده از قبل وجود داشته باشد، در غیر این صورت با خطا مواجه خواهید شد.
حالا فرض کنید یک فایل متنی ساده به نام demofile.txt روی سرور ما قرار دارد و محتویات درون آن به شکل زیر است:
Hello! Welcome to demofile.txt This file is for testing purposes. Good Luck!
همانطور که می دانید برای باز کردن فایل از تابع ()open
استفاده می کنیم. زمانی که فایل را با استفاده از این متد باز کنید، پایتون به فایل و محتویات آن دسترسی خواهد داشت و متد های دیگری مانند ()read
:
f = open("demofile.txt", "r") print(f.read())
خروجی:
Hello! Welcome to demofile.txt
This file is for testing purposes.
Good Luck!
همانطور که می بینید در حالت پیش فرض متد ()read
تمام متن را برمی گرداند اما می توانیم تعداد کاراکترهای برگشتی را مشخص کنیم:
f = open("demofile.txt", "r") print(f.read(5))
خروجی:
Hello
اگر دوست دارید خط اول فایل برگردانده شود باید از متد ()readline
استفاده کنید:
f = open("demofile.txt", "r") print(f.readline())
خروجی:
Hello! Welcome to demofile.txt
در صورتی که دو بار پشت سر هم از این متد استفاده کنید، دو خط اول فایل برگردانده می شوند:
f = open("demofile.txt", "r") print(f.readline()) print(f.readline())
خروجی:
Hello! Welcome to demofile.txt
This file is for testing purposes.
و در نهایت در صورتی که از یک حلقه استفاده کنید (مانند حلقه for) می توانید تک تک خطوط فایل را بخوانیم:
f = open("demofile.txt", "r") for x in f: print(x)
خروجی:
Hello! Welcome to demofile.txt
This file is for testing purposes.
Good Luck!
هشدار: همیشه پس از اتمام عملیات، فایل را با تابع ()close ببنیدید. این کار دو دلیل اصلی دارد: اولا تا زمانی که فایل را نبندید، آن فایل فضای مموری شما را اشغال می کند و برنامه شما کُند می شود. دوما برخی اوقات به دلایلی مانند buffering تا زمانی که فایل را نبندید، تغییرات در فایل اعمال نخواهد شد.
مثالی از بستن فایل:
f = open("demofile.txt", "r") print(f.readline()) f.close()
خروجی:
Hello! Welcome to demofile.txt
برای نوشتن در فایلی که از قبل وجود دارد باید یکی از دو پارامتر زیر را به تابع open پاس دهید:
"a"
: متن شما را به انتهای فایل اضافه می کند (ضمیمه کردن) بنابراین محتوای قبلی حذف نمی شود."w"
: تمام محتوای قبلی را پاک کرده و محتوای جدید را جایگزین آن می کند.در مثال زیر می خواهیم فایلی به نام demofile2.txt را باز کرده و محتویات جدیدی به آن اضافه کنیم:
f = open("demofile2.txt", "a") f.write("Now the file has more content!") f.close() #open and read the file after the appending: f = open("demofile2.txt", "r") print(f.read())
خروجی:
Hello! Welcome to demofile2.txt
This file is for testing purposes.
Good Luck!Now the file has more content!
در مثال زیر می خواهیم فایلی به نام demofile3.txt را باز کرده و محتویات قبلی را با محتویات جدیدی جایگزین کنیم:
f = open("demofile3.txt", "w") f.write("Woops! I have deleted the content!") f.close() #open and read the file after the appending: f = open("demofile3.txt", "r") print(f.read())
خروجی:
Woops! I have deleted the content!
اما اگر می خواهید محتوای جدیدی در فایلی جدید بنویسید باید ابتدا آن فایل را بسازید. برای این کار یکی از پارامتر های زیر را به تابع open پاس بدهید:
"x"
: فایلی می سازد و اگر فایل از قبل وجود داشته باشد خطایی برمی گرداند."a"
: اگر فایل مشخص شده وجود نداشته باشد یک فایل جدید می سازد."w"
: اگر فایل مشخص شده وجود نداشته باشد یک فایل جدید می سازد.به طور مثال در کد زیر یک فایل به نام myfile.txt می سازیم:
f = open("myfile.txt", "x")
نتیجه این کد ساخته شدن یک فایل جدید و البته خالی است. روش دیگر به صورت زیر است:
f = open("myfile.txt", "w")
اگر فایلی به نام myfile.txt وجود نداشته باشد آن گاه یک فایل جدید به همین نام ساخته خواهد شد.
برای حذف فایل ها باید ماژول os را وارد کرده و سپس از متد()os.remove
استفاده کنید. به طور مثال اگر بخواهیم فایل demofile.txt را حذف کنیم، می گوییم:
import os os.remove("demofile.txt")
البته بهتر است فایل ها را بدین شکل (مستقیما) حذف نکنید، چرا که اگر چنین فایلی وجود نداشته باشد با خطا مواجه می شوید. بهتر است ابتدا چک کنید که آیا فلان فایل موجود است یا خیر و سپس آن را حذف کنید:
import os if os.path.exists("demofile.txt"): os.remove("demofile.txt") else: print("The file does not exist")
البته یادتان باشد که با استفاده از ()os.rmdir
میتوان یک دیرکتوری (پوشه) را حذف کرد. در مثال زیر می خواهیم یک پوشه به نام myfolder را حذف کنیم:
import os os.rmdir("myfolder")
هشدار: شما تنها اجازه حذف پوشه های خالی را دارید!
همانطور که می بینید کار با فایل ها در پایتون بسیار ساده است و اصلا مبحث پیچیده ای ندارد.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.