آموزش کار با فایل ها در پایتون

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

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

برای کار با پوشه ها در پایتون ابتدا باید نحوه باز کردن فایل در زبان برنامه نویسی پایتون را بدانیم. خوشبختانه برای باز کردن فایل ها با این زبان نیازمند هیچ ماژول اضافه ای نیستیم. در حقیقت برای شروع کار باید با شی File در پایتون کار کنیم که با دستور open() شی ای از فایل مورد نظر خود را باز کرده و می توانیم شروع به کار با فایل و مدیریت فایل در پایتون کنیم. این دستور به شکل زیر انجام می شود.
file_name = ” demofile.txt”
f = open(“demofile.txt”, “r”)
print(f.read())
این تابع در حقیقت دارای دو ورودی میباشد. ورودی اول برای نام فایل بوده و ورودی دوم حالت باز شدن فایل در پایتون است.

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

به طور کلی برای باز کردن فایل در زبان برنامه نویسی python ، دستورهای مختلفی داریم که در زیر به تعدادی از آنها اشاره کرده و به طور کامل راجب آن صحبت می کنیم.
در ابتدا باید از دستور “ r “ شروع کنیم. این دستور به معنی خواندن فایل در پایتون می باشد. هنگام شروع به کار با این دستور برنامه از ابتدا شروع به خواندن فایل می کند. دستور بعدی “ r+ “ است که این دستور برای خواندن و نوشتن و ویرایش فایل در پایتون استفاده می شود. این دستور نیز همانند دستور قبلی از ابتدای فایل شروع به نوشتن می کند. دستور بعدی دستور “ w “ است. این دستور برای ایجاد یک فایل برای نوشتن استفاده می شود و پوشه ای را برای ما ایجاد می کند. دستور “ w+ “ نیز به مانند دستور w بوده فقط این دستور برای نوشتن و خواندن فایل استفاده می شود. درباره دستور w و w+ باید گفت که این دو دستور در صورتی که فایلی از قبل وجود داشته باشد فایل را حذف کرده و فایل جدیدی را جایگزین آن می کنند. دستور بعدی برای خواندن َ” a “ می باشد که این دستور برای ضمیمه فایل است. این دستور بر خلاف دستورات دیگر، از انتهای فایل کار خود را آغاز می کند. برای دستور a نیز به مانند دستور های دیگر دستور “ a+ “ وجود دارد که برای خواندن و ضمیمه اطلاعات از انتها استفاده می شود. دستور a در صورت نبود فایل خود فایلی ایجاد کرده و از انتها شروع به نوشتن می کند پس توانایی ایجاد فایل را در صورت عدم وجود آن دارد. در شکل پایین تعدادی دیگر دستور های باز کردن پوشه در پایتون را می بینید.

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

ساخت فایل در پایتون در حقیقت اصلاً کار سختی نبوده و به سادگی با همان دستور open() که برای باز کردن فایل در پایتون از آن استفاده می کردیم. انجام می شود. این دستور اگر فایلی در مقصد انتخابی شما باشد آن فایل را برای شما باز می کند اما در صورتی که فایلی در مسیر انتخابی شما وجود نداشته باشد فایلی را برای شما ایجاد کرده و میتوانید کار خود را با آن فایل آغاز کنید. همچنین باید گفت که این فایل ایجاد شده به صورت پیشفرض به شکل فقط خواندنی می باشد و برای نوشتن و یا ویرایش فایل می توانید از دستورات بالا که برای باز کردن فایل بود استفاده کنید.
file_name = “testdemo.txt”
file = open(file_name)

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

برای خواندن فایل در پایتون ۳ روش و سه تابع مختلف وجود دارد که در ادامه به بررسی هر سه این تابع ها می پردازیم.
اولین تابع ما تابع Read است اگر با استفاده از این تابع فایلی را صدا بزنیم تمام محتویات متنی آن فایل را به ما نشان می دهد و متن کامل فایل درخواستی را می توانیم ببینیم.
file = open(file_name)
print(file.read())
این تابع توانایی نشان دادن تعداد مشخصی از حروف را نیز دارد که به صورت print(file.read(6)) نوشته می شود که به معنی نمایش ۶ کاراکتر از فایل متنی ما است. گفتن این نکته نیز ضروری است که اگر دو بار به صورت پشت سرهم از این تابع استفاده کنیم نتیجه ای در خروجی دفعه دوم نخواهیم دید. دلیل این مورد نیز این است که هنگام استفاده از این تابع برای دفعه اول همه محتویات و متن داخل تابع خوانده شده و دیگر چیزی برای خواندن در دفعه دوم باقی نمیماند که همین امر سبب می شود در دفعه دوم چیزی برای نمایش به ما وجود نداشته باشد.
دومین تابع برای انجام دستور خواندن تابع readline می باشد. تفاوت این تابع با تابع read در خواندن خط به خط است. این موضوع به معنی خواندن یک خط از فایل متنی ما پس از هربار استفاده از این تابع می باشد. برای اینکه نحوه کار و عملکرد این تابع را بهتر درک کنیم بهتر است به مثال زیر توجه کنیم.
f = open(“demofile.txt”, “r”)
print(f.readline())
print(f.readline())
#Hello! Welcome to demofile.txt
#This file is for testing purposes.
همانطور که در کد بالا می بینید پس از هربار استفاده از تابع readline یک خط از فایل متنی ما خوانده می شود. از طرفی به دلیل استفاده از دستور print فایل ما در هر مرحله یک خط به پایین آمده و دستور /n به دلیل استفاده از print به طور خودکار اجرا می شود.
تابع بعدی برای خواندن فایل در پایتون تابع readlines است. این تابع، تابع بسیار مهم و کاربردی برای استفاده در هنگامی است که نیاز به تهیه لیست از محتویات درون یک فایل متنی را داریم. برای اینکه محتویات درون یک فایل متنی را به طور کامل به لیست تبدیل کنیم دو راه پیش روی ما است. راه اول استفاده از readline به تعداد خط های فایل متنی است که در صورت طولانی بودن فایل ما کاری بسیار طولانی است و دومی نیز استفاده از دستور readlines است که تمام محتویات فایل متنی مارا لیست می کند.

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

علاوه بر تابع های فوق بعضی مواقع برنامه نویسان نیازمند خواندن فایل csv در پایتون و استفاده از آن هستند. برای این منظور باید کتابخانه های مخصوص اینکار استفاده کنیم که یکی از آن ها کتابخانه csv است که با دستور زیر می توان آن را در import کنید.
import csv
with open(‘some.csv’, ‘rb’) as f:
reader = csv.reader(f)
for row in reader:
print row
به وسیله کد بالا ابتدا کتابخانه ای برای خواندن فایل csv فراخوانی کرده و پس از آن نیز باز شدن فایل some.csvامکان پذیر می شود.

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

برای نوشتن فایل در پایتون دو تابع اصلی وجود دارد که در اینجا به بررسی هر دو آن ها می پردازیم. تابع اول تابع write است. این تابع در حقیقت یک رشته ورودی گرفته و در فایل ما ذخیره می کند. برای ذخیره فایل در پایتون فقط کافی است که فایل را بعد از اتمام کار ببندیم.
f = open(“demofile3.txt”, “w”)

f.write(“Woops! I have deleted the content!”)

f.close()

با استفاده از این دستور جمله Woops! I have deleted the content! در درون فایل demofile3.txt قرار گرفته و دردرون آن نوشته می شود.
تابع مهم و اصلی دیگری که برای نوشتن فایل در زبان برنامه نویسی پایتون استفاده می شود. تابع writelines است. این تابع همانند readlines عمل کرده و چندین رشته متنی را به سادگی به فایل ما اضافه می کند.
f = open(“demofile3.txt”, “a”)

f.writelines([“See you soon!”, “Over and out.”])

f.close()
به خاطر داشته باشیم که اگر دستور file close را استفاده نکنیم خود پایتون بعد از مدتی که متوجه تمام شدن کار ما با فایل متنی مورد نظر شود فایل متنی ما را می بندد اما اگر در این حین اتفاقی بیافتد و خطایی رخ دهد ممکن است داده های ما ازبین برود. به همین دلیل دستور file close را در آخر کد اضافه می کنیم که به مانند دستور save در پایتون عمل می کند.

حذف فایل

برای اینکه بتوانیم فایلی را در زبان برنامه نویسی پایتون حذف کنیم. نیازمند یک کتابخانه هستیم. این کتابخانه os نام دارد و در درون خود پایتون موجود است. فقط کافی است این کتابخانه را فراخوانی کرده تا بتوانیم عملیات حذف فایل در پایتون را انجام دهیم. باید گفت که برای حذف فایل ها، فایل مورد نظر باید خالی باشد. درغیر این صورت فایل حذف نخواهد شد.
import os
if os.path.exists(“demofile.txt”):
os.remove(“demofile.txt”)
else:
print(“The file does not exist”)
همانطور که می بینید ما در ابتدا کتابخانه os را فراخوانی کرده و سپس دستور os.remove را اجرا می کنیم. دلیل اینکه این کد دارای یک شرط است به نداشتن ارور در برنامه برمی گردد. به این معنی که با استفاده از تابع os.path.exists موجودیت تابع در محل مورد نظر مشخص شده و پس از آدرس دهی فایل در پایتون، مورد بررسی قرار می گیرد و در صورت وجود اقدام به حذف آن می کند.
حذف فایل

بهبود کد در پایتون

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

نخستین گام برای بهبود کد نسخه بندی کردن آن است. شاید شنیده باشید که بسیاری از افراد به نسخه بندی کد ها عادت دارند اما همچنان افرادی پیدا می شوند که این کار را انجام نمیدهند. انجام اینکار در حقیقت یک ضرورت است و کمک قابل توجهی به شما به عنوان یک برنامه نویس می کند. گیت هاب بستری است که با استفاده از آن می توانید برنامه خودرا نسخه بندی کنید. گام دومی که باید برای بهبود کد خود طی کنید این است که کد را مستقیماً به شاخه اصلی ( master ) نفرستید و کد را با استفاده از یک درخواست pull با شاخه مستر ادغام کنید. دلیل اینکار این است که بررسی کد به شکل ساده تری انجام شده و به خصوص در کار های گروهی اعضای دیگر گروه به راحتی می توانند کد های شما را بررسی کرده و مشکلات را به شما بگویند. برای اینکه بعد از ایجاد این درخواست ها سرباری بر روی سیستم شما ایجاد نشود. می توانید از سیستم های CI/CD استفاده کنید. این سیستم ها به بررسی کامل کد شما قبل از ادغام می پردازد تا در هنگام ادغام مشکلی برای شما پیش نیاید. در گام بعدی شما می توانید از ابزار هایی استفاده کنید که فرمت کد شما را تغییر داده و آن را به نوعی استاندارد سازی می کنند. این ابزار ها مانند YAPF می توانند کد شما را به طور مناسبی پیکر بندی کنند. شما برای بهبود خود همچنین میتوانید از linter ها استفاده کنید. این ابزار ها در حقیقت فقط به بررسی خطاها پرداخته و در پیکره اصلی کد شما تغییری را ایجاد نمی کنند.

برای بهبود کد خود، ما همچنین توانایی استفاده از ابزار های خارجی را نیز داریم. این ابزار ها با کمک یادگیری ماشین به ما کمک می کنند که به سادگی بتوانیم کد خود را استاندارد کنیم. مطالب گفته شده فقط بخشی از روش های بهبود کد بوده و مطمئناً روش های دیگری نیز برای اینکار وجود دارند.

کنترل خطا در خواندن فایل

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

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

 

نکته
دوره پیشنهادی: آموزش رایگان پایتون

در پایان باید گفت که مدیریت فایل ها در زبان برنامه نویسی پایتون بسیار مهم بوده و هر برنامه نویسی باید توانایی کار با فایل ها را در زبان برنامه نویسی پایتون پیدا کند. از همین رو مطلب فوق توضیح کاملی را درباره نحوه کار و ویرایش و همچنین مدیریت پوشه ها در زبان برنامه نویسی پایتون اراِئه داده است. اگر شما نیز می خواهید برنامه نویسی پایتون را آغاز کنید و یا شروع به مدیریت فایل ها در پایتون کنید این مطلب برای شما بسیار مناسب است.