از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
مدیریت فایل در پایتون
سرفصلهای مطلب
معرفی
این یک توافق نانوشته است که پایتون یکی از بهترین زبان های برنامه نویسی شروع برای یادگیری به عنوان یک تازه کار است. بسیار همه کاره است، خواندن/تحلیل آسان و برای چشم بسیار دلپذیر است. زبان برنامه نویسی پایتون بسیار مقیاس پذیر است و به طور گسترده به عنوان یکی از بهترین جعبه ابزارها برای ساخت ابزارها و ابزارهای کمکی در نظر گرفته می شود که ممکن است به دلایل مختلف بخواهید از آنها استفاده کنید.
در این مقاله به طور خلاصه روش مدیریت پایتون با یکی از مهمترین اجزای هر سیستم عامل: فایلها و دایرکتوریهای آن، توضیح داده میشود. خوشبختانه پایتون دارای توابع داخلی برای ایجاد و دستکاری فایل ها نیز هست فایل های مسطح یا فایل های متنی. را io
ماژول ماژول پیش فرض برای دسترسی به فایل ها است، بنابراین نیازی به این نخواهیم داشت import هر کتابخانه خارجی برای عملیات عمومی IO.
توابع کلیدی مورد استفاده برای مدیریت فایل در پایتون عبارتند از: open()
، close()
، read()
، write()
و append()
.
باز کردن فایل ها با open()
این تابع یک شی فایل به نام “handle” را برمی گرداند که برای خواندن و نوشتن در یک فایل استفاده می شود. آرگومان هایی که تابع می تواند دریافت کند به شرح زیر است:
open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
به طور معمول، فقط filename
و mode
پارامترها مورد نیاز هستند، در حالی که بقیه به طور ضمنی با مقادیر پیش فرض خود تنظیم می شوند.
قطعه کد زیر روش استفاده از این تابع را نشان می دهد:
file_example = open ("TestingText.txt")
با این کار یک فایل متنی به نام “TestingText” در حالت فقط خواندنی باز می شود. توجه داشته باشید که فقط پارامتر نام فایل مشخص شده است، این به دلیل این است که حالت “خواندن” حالت پیش فرض برای عملکرد باز است.
حالت های دسترسی موجود برای open()
عملکرد به شرح زیر است:
r
: فایل را در حالت فقط خواندنی باز می کند. خواندن را از ابتدای فایل شروع می کند و حالت پیش فرض برای فایل استopen()
تابع.rb
: فایل را به صورت فقط خواندنی در فرمت باینری باز می کند و از ابتدای فایل شروع به خواندن می کند. در حالی که فرمت باینری را می توان برای مقاصد مختلف استفاده کرد، اینطور است معمولا هنگام برخورد با چیزهایی مانند تصاویر، فیلم ها و غیره استفاده می شود.r+
: فایلی را برای خواندن و نوشتن باز می کند و نشانگر را در ابتدای فایل قرار می دهد.w
: در حالت فقط نوشتن باز می شود. اشاره گر در ابتدای فایل قرار می گیرد و هر فایل موجود با همان نام را بازنویسی می کند. اگر فایلی با همین نام وجود نداشته باشد، یک فایل جدید ایجاد می کند.wb
: یک فایل فقط نوشتنی را در حالت باینری باز می کند.w+
: فایلی را برای نوشتن و خواندن باز می کند.wb+
: فایلی را برای نوشتن و خواندن در حالت باینری باز می کند.a
: فایلی را برای افزودن اطلاعات جدید به آن باز می کند. اشاره گر در انتهای فایل قرار می گیرد. اگر فایلی با همین نام وجود نداشته باشد، یک فایل جدید ایجاد می شود.ab
: فایلی را برای افزودن در حالت باینری باز می کند.a+
: فایلی را هم برای افزودن و هم برای خواندن باز می کند.ab+
: فایلی را برای افزودن و خواندن در حالت باینری باز می کند.
اگر هم فایل پایتون در حال اجرا و هم فایل مورد نظر برای خواندن در یک دایرکتوری وجود نداشته باشند، باید مسیر کامل فایل را برای خواندن به open()
همانطور که در قطعه کد زیر نشان داده شده است عمل کنید:
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt")
توجه داشته باشید: چیزی که باید در نظر داشته باشید این است که همیشه از صحت نام فایل و مسیر داده شده مطمئن شوید. اگر هر کدام نادرست است یا وجود ندارد، خطا FileNotFoundError
پرتاب خواهد شد، که باید برای جلوگیری از خراب شدن آن، توسط برنامه شما دستگیر و مدیریت شود.
برای جلوگیری از این مشکل، به عنوان بهترین روش، خطاها را می توان با یک بلوک try-finally برای رسیدگی به استثناء همانطور که در زیر نشان داده شده است، شناسایی کرد.
try:
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt")
except IOError:
print("An error was found. Either path is incorrect or file doesn't exist!")
finally:
print("Terminating process!")
خواندن از فایل ها با read()
پایتون دارای 3 تابع برای خواندن فایل ها است: read()
، readline()
، و readlines()
. دو تابع آخر صرفاً توابع کمکی هستند که خواندن انواع خاصی از فایل ها را آسان تر می کنند.
برای مثال هایی که استفاده می شود، “TestingText.txt” حاوی متن زیر است:
Hello, world! Python is the way to coding awesomeness.
If you don't believe me, try it روی your own.
Come, you will enjoy the Dark Side. We have cookies!
روش خواندن به صورت زیر استفاده می شود:
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r")
print(file_example.read())
خروجی به صورت زیر خواهد بود:
Hello, world! Python is the way to coding awesomeness.
If you don't believe me, try it روی your own.
Come, you will enjoy the Dark Side. We have cookies!
توجه داشته باشید: ممکن است کاراکترهای ویژه با استفاده از علامت به درستی خوانده نشوند read
تابع. برای خواندن صحیح کاراکترهای خاص، می توانید پارامتر رمزگذاری را به آن منتقل کنید read()
تابع و مقدار آن را بر روی utf8
همانطور که در زیر نشان داده شده است:
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r", encoding="utf8" )
همچنین، تابع read()
و همچنین عملکرد کمک کننده readline()
، می تواند عددی را به عنوان پارامتری دریافت کند که تعداد بایت های خواندن از فایل را تعیین می کند. در مورد فایل متنی، این تعداد کاراکترهای بازگشتی خواهد بود.
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r")
print(file_example.read(8))
خروجی به صورت زیر خواهد بود:
Hello, w
تابع کمکی readline()
به روشی مشابه رفتار می کند، اما به جای بازگرداندن کل متن، یک خط را برمی گرداند.
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r")
print(file_example.readline())
print(file_example.readline(5))
در اسکریپت بالا، اولین print()
دستور خط اول را برمی گرداند و یک خط خالی در خروجی وارد می کند console. بعدی print()
دستور با یک خط خالی از خط قبلی جدا شده و شروع می شود روی یک خط جدید همانطور که در خروجی نشان داده شده است:
Hello world! Python is the way to coding awesomeness.
If yo
در نهایت، تابع کمکی readlines()
تمام متن را می خواند و آنها را برای خواندن آسان به خطوط تقسیم می کند. به مثال زیر دقت کنید:
print(file_example.readlines())
خروجی این کد به صورت زیر خواهد بود:
Hello world! Python is the way to coding awesomeness. If you don't believe me, try it روی your own. Come, you will enjoy the Dark Side. We have cookies!
به خاطر داشته باشید که readlines()
تابع در نظر گرفته می شود بسیار کندتر و ناکارآمدتر از read()
عملکرد، بدون مزایای زیادی. یک جایگزین خوب برای این، استفاده از حلقه ای است که بسیار روان تر و سریع تر عمل می کند:
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r")
for lines in file_example:
print(lines)
توجه داشته باشید که اگر خط چاپ نشده باشد، با دستور بعدی در بافر جایگزین می شود
نوشتن روی فایل ها با write()
هنگام استفاده از این تابع، اطلاعات داخل فایلی با همین نام رونویسی می شود. رفتارش شبیه به read()
عملکرد، اما درج اطلاعات به جای خواندن آن.
file_example2 = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingTextTwo.txt", "w")
file_example2.write("This is a test. Enjoy it!\n")
file_example2.write("Another thing to know is doing it slowly.\n")
file_example2.write("One by one. Yay!")
اگر نیاز به نوشتن چند خط باشد، تابع فرعی است writelines()
می توان به جای آن استفاده کرد:
listOfThingsToSay = ("I like things like: \n", "Ice Cream\n", "Fruits\n", "Movies\n", "Anime\n", "Naps\n", "Jerky\n")
file_example2 = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingTextTwo.txt", "w")
file_example2.writelines(listOfThingsToSay)
توجه داشته باشید: قابلیت استفاده داشته باشد print()
عملکرد، حالت باید به صورت تنظیم شود w+
، که امکان خواندن و نوشتن را نیز فراهم می کند.
افزودن به فایل ها با append()
این تابع شبیه به write()
عملکرد، با این حال، به جای بازنویسی فایل، append()
تابع محتوا را به فایل موجود اضافه می کند.
اگر یک فایل متنی با نام “TestingTextThree” حاوی اطلاعات زیر باشد:
Some essential things are missing in life and should not be avoided.
برای افزودن متن جدید می توان از کد زیر استفاده کرد:
listOfThingsDo = ("You need at least to: \n", "Eat fried Ice Cream\n", "Go to Disney\n", "Travel to the moon\n", "Cook Pineapple Pizza\n", "Dance Salsa\n")
file_example3 = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingTextThree.txt", "a+")
file_example3.writelines(listOfThingsToDo)
for newline in file_example3
print(newlines)
خروجی به صورت زیر خواهد بود:
Some essential things are missing in life and should not be avoided.
You need at least to:
Eat fried Ice Cream
Go to Disney
Travel to the moon
Cook Pineapple Pizza
Dance Salsa
بستن فایل های باز شده با close()
را close()
تابع بافر حافظه را پاک می کند و فایل را می بندد. این بدان معناست که دیگر نمیتوانیم فایل را بخوانیم و اگر بخواهیم دوباره از روی آن بخوانیم، باید آن را دوباره باز کنیم. همچنین، برخی از سیستمعاملها، مانند ویندوز، فایلهای باز شده را قفل میکنند، بنابراین مهم است که کدهای خود را پاک کنید.
با استفاده از کد نمونه استفاده شده قبلی، این تابع به صورت زیر استفاده می شود:
file_example = open ("F:\\Directory\\AnotherDirectory\\tests\\TestingText.txt", "r")
print(file_example.read())
file_example.close()
نتیجه
پایتون یکی از قوی ترین زبان های برنامه نویسی و همچنین یکی از پرکاربردترین زبان های برنامه نویسی است. پیاده سازی و همچنین تجزیه و تحلیل آن آسان است و آن را به ابزاری عالی برای مبتدیان در برنامه نویسی تبدیل می کند. علاوه بر این، تطبیق پذیری آن، آن را به یک نقطه شروع عالی برای مبتدیان برنامه نویسی تبدیل می کند.
در مورد مدیریت فایل، پایتون دارای توابع آسان با استفاده از زمان پاسخ سریع و روشهای رسیدگی به خطا نسبتاً انعطافپذیر است، بنابراین فرآیندهای توسعه و اشکال زدایی نسبت به سایر زبانها در هنگام کار با فایلها بسیار کم دردسرتر هستند.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-27 09:26:03