خواندن و نوشتن فایل در پایتون یکی از مهمترین مفاهیم برای برنامهنویسان است که به آنها این امکان را میدهد تا با دادههای ذخیره شده در فایلها تعامل داشته باشند. پایتون با ارائه توابع ساده و مؤثر مانند ()open() ،read() ،write و ()close، کار با فایلها را بهراحتی قابل انجام میسازد. این عملیات میتواند شامل خواندن محتویات فایلها، نوشتن اطلاعات جدید در آنها، و مدیریت منابع فایلها باشد.
مقدمه
پایتون توابع داخلی برای ایجاد، خواندن و نوشتن فایل در پایتون فراهم میکند. دو نوع فایل در پایتون قابل مدیریت هستند:
- فایلهای متنی: در این نوع فایل، هر خط متن با یک کاراکتر ویژه به نام EOL «پایان خط» پایان مییابد که در پایتون بهصورت پیشفرض کاراکتر n\ است.
- فایلهای باینری: در این نوع فایل، پایان دهندهای برای خطوط وجود ندارد و دادهها پس از تبدیل شدن به زبان باینری قابل درک برای ماشین ذخیره میشوند.
در این مقاله، به بررسی نحوه خواندن و نوشتن فایل در پایتون خواهیم پرداخت. این توانایی به شما کمک میکند تا دادهها را از فایلها استخراج کنید یا تغییرات جدیدی را در آنها ذخیره کنید، که در بسیاری از پروژهها و برنامهها ضروری است.
باز کردن یک فایل متنی در پایتون
این کار با استفاده از تابع ()open انجام میشود. برای استفاده از این تابع نیازی به وارد کردن هیچ ماژولی نیست.
File_object = open(r"File_Name","Access_Mode")
مثال: در اینجا، file1 بهعنوان یک شی برای MyFile1 و file2 بهعنوان یک شیء برای MyFile2 ایجاد میشود.
# Open function to open the file "MyFile1.txt" # (same directory) in append mode and file1 = open("MyFile1.txt","a") # store its reference in the variable file1 # and "MyFile2.txt" in D:\Text in file2 file2 = open(r"D:\Text\MyFile2.txt","w+")
خواندن فایل متنی در پایتون
سه روش برای خواندن فایل متنی «Text file» در پایتون وجود دارد:
۱. استفاده از ()read
۲. استفاده از ()readline
۳. استفاده از ()readlines
خواندن از فایل با استفاده از ()read در پایتون
()read: بایتهای خواندهشده را به صورت یک رشته «String» برمیگرداند. اگر n مشخص شود، تعداد n بایت را میخواند. اگر n مشخص نشود، کل فایل را میخواند.
File_object.read([n])
خواندن یک فایل متنی با استفاده از ()readline در پایتون
()readline: یک خط از فایل را میخواند و به صورت یک رشته بازمیگرداند.
اگر n مشخص شود، حداکثر n بایت را میخواند. با این حال، حتی اگر n از طول خط بیشتر باشد، بیش از یک خط را نمیخواند.
File_object.readline([n])
خواندن یک فایل با استفاده از ()readlines در پایتون
()readlines: تمام خطوط فایل را میخواند و هر خط را بهصورت یک عنصر رشتهای در یک لیست «List» برمیگرداند.
File_object.readlines()
نکته: کاراکتر n\ بهعنوان یک کاراکتر ویژه با دو بایت در نظر گرفته میشود.
در این مثال، فایلی به نام «myfile.txt» ایجاد و در حالت نوشتن «w» باز میشود. دادهها «Datas» با استفاده از متدهای write و writelines در فایل نوشته میشوند. سپس فایل در حالت خواندن و افزودن «+r» باز میشود. عملیات مختلف خواندن، شامل read ، readline ، readlines و استفاده از seek ، روشهای مختلف بازیابی داده «Data recovery» از فایل را نشان میدهند. در نهایت، فایل بسته میشود.
file1 = open("myfile.txt", "w") L = ["This is Delhi \n", "This is Paris \n", "This is London \n"] # \n is placed to indicate EOL (End of Line) file1.write("Hello \n") file1.writelines(L) file1.close() # to change file access modes file1 = open("myfile.txt", "r+") print("Output of Read function is ") print(file1.read()) print() # seek(n) takes the file handle to the nth # byte from the beginning. file1.seek(0) print("Output of Readline function is ") print(file1.readline()) print() file1.seek(0) # To show difference between read and readline print("Output of Read(9) function is ") print(file1.read(9)) print() file1.seek(0) print("Output of Readline(9) function is ") print(file1.readline(9)) file1.seek(0) # readlines function print("Output of Readlines function is ") print(file1.readlines()) print() file1.close()
خروجی:
Output of Read function is Hello This is Delhi This is Paris This is London Output of Readline function is Hello Output of Read(9) function is Hello Th Output of Readline(9) function is Hello Output of Readlines function is ['Hello \n', 'This is Delhi \n', 'This is Paris \n', 'This is London \n']
نوشتن فایل متنی در پایتون
دو روش برای نوشتن در یک فایل وجود دارد:
- استفاده از ()write
- استفاده از ()writelines
نوشتن در فایل متنی پایتون با استفاده از ()write در پایتون
()write: رشته str1 را در یک خط در فایل متنی وارد میکند.
File_object.write(str1)
file = open("Employees.txt", "w") for i in range(3): name = input("Enter the name of the employee: ") file.write(name) file.write("\n") file.close() print("Data is written into the file.")
خروجی:
Data is written into the file.
نوشتن در فایل متنی با استفاده از ()writelines در پایتون
()writelines: برای یک لیست از عناصر رشتهای، هر رشته به طور جداگانه در فایل متنی وارد میشود. از این روش برای وارد کردن چندین رشته در یک زمان استفاده میشود.
File_object.writelines(L) for L = [str1, str2, str3]
file1 = open("Employees.txt", "w") lst = [] for i in range(3): name = input("Enter the name of the employee: ") lst.append(name + '\n') file1.writelines(lst) file1.close() print("Data is written into the file.")
خروجی:
Data is written into the file.
اضافه کردن یک فایل در پایتون
در این مثال، یک فایل به نام «myfile.txt» ابتدا در حالت نوشتن «w» باز میشود تا خطوط متنی نوشته شود. سپس فایل دوباره در حالت افزودن «a» باز میشود و کلمه «Today» به محتوای موجود اضافه میشود. خروجی پس از افزودن با استفاده از readlines نمایش داده میشود. سپس فایل دوباره در حالت نوشتن باز میشود و محتوا با کلمه «Tomorrow» جایگزین میشود. خروجی نهایی پس از نوشتن با استفاده از readlines نمایش داده میشود.
file1 = open("myfile.txt", "w") L = ["This is Delhi \n", "This is Paris \n", "This is London \n"] file1.writelines(L) file1.close() # Append-adds at last file1 = open("myfile.txt", "a") # append mode file1.write("Today \n") file1.close() file1 = open("myfile.txt", "r") print("Output of Readlines after appending") print(file1.readlines()) print() file1.close() # Write-Overwrites file1 = open("myfile.txt", "w") # write mode file1.write("Tomorrow \n") file1.close() file1 = open("myfile.txt", "r") print("Output of Readlines after writing") print(file1.readlines()) print() file1.close()
خروجی:
Output of Readlines after appending ['This is Delhi \n', 'This is Paris \n', 'This is London \n', 'Today \n'] Output of Readlines after writing ['Tomorrow \n']
بستن یک فایل متنی در پایتون
تابع ()close در پایتون «Python» فایل را میبندد و فضای حافظهای که توسط آن فایل اختصاص داده شده است را آزاد میکند. از این تابع زمانی استفاده میشود که فایل دیگر مورد نیاز نباشد یا اگر قرار است در حالت فایل متفاوتی باز شود.
# Opening and Closing a file "MyFile.txt" # for object name file1. file1 = open("MyFile.txt","a") file1.close()
نتیجه گیری
پایتون ابزارهای ساده و موثری برای خواندن و نوشتن فایل در پایتون ارائه میدهد که امکان پردازش دادهها را بهطور مؤثر فراهم میکند. با استفاده از توابعی مانند ()open() ،read() ،write() و ()close، میتوان بهراحتی فایلها را برای خواندن و نوشتن باز کرد و دادهها را در آنها مدیریت کرد. استفاده از ساختار with بهویژه در مدیریت فایلها اهمیت زیادی دارد، چرا که بهطور خودکار منابع را آزاد میکند و از ایجاد مشکلاتی مانند فراموشی بستن فایل جلوگیری میکند. در مجموع، پایتون با سادگی و قدرت خود در عملیات فایلخوانی و فایلنویسی، ابزار مناسبی برای برنامهنویسان در ذخیرهسازی و پردازش دادهها فراهم میآورد.