کار با فایل ها در پایتون (python) از جمله مواردی هستند که در دنیای برنامه نویسی ( programing)  اهمیت ویژه ای دارند. ما همواره در حال تبادل فایل ها به سراسر جهان هستیم. در شبکه های اجتماعی، در وبسایت ها و حتی در نرم افزار های موبایل، این اشتراک گذاری و کار با فایل هاست که از اهمیت بالایی برخوردار است. کار با فایل ها مهارت مهمی است که هر توسعه دهنده پایتون بایستی آن را حین یادگیری و آموزش پایتون فراگیرد.

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

دوره معرفی شده در ویدئو

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

نکته
مقاله مرتبط: پایتون یا سی شارپ

 اهمیت کار با فایل

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

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

ساخت فایل در python

در این مقاله یک پروژه ساده ایجاد می کنیم تا با آموزش کار با فایل python را به شما نشان دهیم.

  • یک فایل متنی جدید ایجاد کنید (اگر از قبل موجود نیست)
  • فایل را برای ویرایش باز کنید.
  • داده های خود را در فایل بنویسید.
  • فایل را ذخیره کنید.
  • وقتی کارتان تمام شد فایل را ببندید.

 

از تابع open()  و close () استفاده کنید. (باز کردن فایل در پایتون و بستن آن)

برای باز کردن فایل در پایتون ابتدا لازم است که فایل مورد نظر خود را با فرمت .txt در محیط VScode   باز کنید و یک فایل با تابع () open داخلی ایجاد کنید و در این تابع مسیر فایلی که به فرمت .txt  وجود دارد را وارد کنید. نام فایل مورد نظرتان را بنویسید ( برای مثال f ) و در ادامه حالت (mode) را تعیین کنید.

file = open ( file_name, “a+” )

F= open (“sample.txt”, “r” )

f.close()

اگر فایل وجود نداشته باشد، با استفاده از حالت ‘a’ ایجاد می شود.

معرفی modeهای فایل ( python programing mode ):

mode: ویژگی و حالت یک فایل در پایتون است که حالت باز شدن فایل را به ما مشخص می کند به عبارتی mode یکی از مهم ترین پارامترهای کار با فایل در پایتون می باشد.

در زیر انواع مودها را بررسی می کنیم:

  • “r” = read

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

f = open(“sample.txt “, “r”)

  • “a” = append

در این حالت، ابتدا شروع به بررسی فایل می کند که آیا فایل وجود دارد یا نه ؟!

اگر فایل وجود نداشته باشد یک فایل خالی ایجاد می شود و اگر فایلی از قبل وجود داشته باشد، همان پوشه را برای شما باز می کند ( فراخوانی می کند ).

  • “w” = write

متد write() برای نوشتن در فایل متنی و افزودن محتوای رشته مورد نظر استفاده می شود.

  • “x” = create

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

توابع کار با فایل در پایتون :

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

کار با فایل در پایتون

f = open(“sample.txt “, “r”)

print(f.read(5))

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

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

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

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

دستور save در پایتون

همانطور که میدانید بلافاصله پس از بستن برنامه، تمام متغیر هایی که ایجاد کرده ایم از RAM سیستم پاک خواهند شد. برای نگهداری این اطلاعات بایستی آنها را در جایی ذخیره سازی کنیم. نحوه ذخیره فایل پایتون (مثلا .txt ) به این صورت است که اول باید متغیر های ما به رشته تبدیل شوند. این عملیات را میتوان با استفاده از ( متغیر ) str انجام داد :

>>> x.write (str (12) (

>>> x.write (str ( [1,2,3] ) )

حال بایستی برای حفظ ساختار متغیر ها، ابتدا ماژول pickle را import کرده و سپس یک فایل را باز کنیم ( البته اگر فایلی وجود ندارد، ابتدا از طریق open باید یک فایل جدید ایجاد کنید ) بدین گونه :

>>> import pickle

>>> x = open (“test.pck[A1] “,”w[A2] “)

اکنون برای ذخیره کردن فایل از dump استفاده کرده و فایل را Close میکنیم :

>>> pickle. dump (12.3, x)

>>> pickle. dump ([1,2,3], x)

>>> x.close ()

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

فرض کنید فایلی با نام test را ایجاد کرده ایم. اکنون میخواهیم ویرایش فایل در پایتون را مورد بررسی قرار دهیم. قطعا همواره پس از نوشتن یک فایل، به فکر ایجاد تغییرات در آن خواهیم بود که بدون متد های از پیش آماده، انجام این کار سخت و طاقت فرساست. خداروشکر ویرایش فایل در پایتون به سادگی آب خوردن است. در کد زیر ابتدای جمله Now the file has more content که در فایل test ذخیره کرده ایم را تغییر خواهیم داد :

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())

آدرس دهی فایل در پایتون

در آدرس دهی فایل در پایتون دو حالت وجود دارد:

1- زمانی که فایل پایتون با فایل مورد نظر (مثلا txt) در یک فولدر قرار دارند. در این صورت تنها کافیست نام فایل به همراه پسوند آن در قسمت مشخص شده نوشته شود:

file = open('filename.txt')

2- زمانی که فایل پایتون با فایل مورد نظر در فولدرهای جداگانه قرار دارند. در این صورت دو نوع آدرس دهی وجود دارد:

  • آدرس دهی کامل (absolute path): این نوع آدرس دهی مانند مسیردهی در یک محیط خط فرمان است. به عنوان مثال:

\Users\xyz\desktop\projects\data\example-project.txt

  • آدرسی دهی نسبی (relative path): آدرس دهی در این حالت وابسته به محل فعلی فایل پایتون (.py) است. به عنوان مثال:

..\data\example-project.txt

معرفی کتابخانه کار با فایل pickle

به عنوان یک توسعه دهنده پایتون ، ممکن است گاهی اوقات نیاز داشته باشد که سلسله مراتب های پیچیده فایل را روی یک شبکه ارسال کنید یا وضعیت داخلی فایل خود را در یک دیسک یا پایگاه داده برای استفاده بعدی ذخیره کنید. برای رسیدن به این هدف، می‌توانید از فرآیندی به نام سریال‌سازی استفاده کنید که به لطف ماژول Pithon pickle توسط کتابخانه استاندارد پشتیبانی می‌شود.

کار با Pithon pickle برای سریال سازی و سریال زدایی یک ساختار موضوعی پایتون استفاده می شود. هر چیزی در پایتون را می توان طراحی کرد تا در دیسک ذخیره شود. Pickling راهی برای تبدیل یک موضوع python (list، dict و …) به یک جریان کاراکتر است.

فرآیند سریال سازی روشی برای تبدیل ساختار داده به شکل خطی است که می تواند از طریق شبکه ذخیره یا ارسال شود.

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

پایتون سه ماژول مختلف را در کتابخانه استاندارد ارائه می‌کند که به شما امکان می‌دهد اشیاء را سریال‌سازی و سریال‌زدایی کنید:

  • The Marshal Module
  • The json module
  • The pickle module

کار با فایل در پایتون

کنترل خطا فایل:

پایتون استثناهای داخلی زیادی دارد که وقتی برنامه شما با خطا مواجه می‌شود (یک مشکل در برنامه پیش می‌آید) ایجاد می‌شوند.

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

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

 

اگر کنترل نشود، یک پیغام خطا نمایش داده می شود و برنامه ما به طور ناگهانی به طور غیر منتظره خاموش می شود.

در پایتون، استثناها را می توان با استفاده از دستور try مدیریت کرد.

عملیات حیاتی که می تواند یک استثنا ایجاد کند در عبارت try قرار می گیرد. کدی که استثناها را کنترل می کند در عبارت استثنا نوشته شده است.

دستورات with   as

دستور with در پایتون برای مدیریت منابع و مدیریت استثنا استفاده می شود. به احتمال زیاد هنگام کار با فایل آن را پیدا خواهید کرد. دستور with در پایتون در مدیریت استثنا استفاده می‌شود تا کد را واضح تر و خواناتر کند. مدیریت منابع رایج مانند جریان فایل را ساده می کند.

نمونه کد زیر را بررسی کنید که چگونه استفاده از دستور with کد را کوتاه تر و تمیز تر نمایش می دهد:

# 1) without using with statement

file = open(‘file_path’, ‘w’)

file.write(‘hello world !’)

file.close()

 

# 2) without using with statement

file = open(‘file_path’, ‘w’)

try:

file.write(‘hello world’)

finally:

file.close()

 

# using with statement

with open(‘file_path’, ‘w’) as file:

file.write(‘hello world !’)

 

دستور as  مثل یک نام مستعار است. اگر یک کتابخانه یا ماژول را به یک برنامه وارد می‌کنید، اما به دلایلی می‌خواهید از نام دیگری (بیش از حد طولانی شدن یا گم کردن فایل به دلیل نامشخص بودن نام ) می‌توان از آن برای تغییر نام استفاده کرد.

به مثال زیر توجه کنید با استفاده از این دستور as برای کار با فایل در python که با هدف کوتاه تر کردن کدها مورد استفاده قرار می گیرد.

>>> import numpy

>>> numpy.max([1,2,3])

3

>>> import numpy as np

>>> np.max([1,2,3])

3

>>> from itertools import combinations as comb

>>> comb([1,2,3], 2)

[(1,2), (2,3), (1,3)]