آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون ۳

3 سال پیش
Python 3 - Exception Handling آگهی ها صفحه قبلی صفحه بعد پایتون دو ویژگی بسیار مهم را برای مدیریت هرگونه خطای غیرمنتظره در برنامه‌های پایتون شما و افزودن قابلیت‌های اشکال زدایی در آن‌ها فراهم می‌کند. Exception Handling - این مورد در این آموزش پوشش داده خواهد شد. در اینجا لیستی از استثناهای استاندارد موجود در پایتون وجود دارد - استثناهای استاندارد. ادعاها - این در آموزش ادعاها در پایتون 3 پوشش داده می شود. استثناهای استاندارد در اینجا لیستی از استثناهای استاندارد موجود در پایتون آمده است. - شماره پدر نام و شرح استثنا 1 استثنا کلاس پایه برای همه استثناها 2 توقف تکرار زمانی که متد next() یک تکرار کننده به هیچ شیئی اشاره نمی کند افزایش می یابد. 3 SystemExit توسط تابع sys.exit() مطرح شده است. 4 خطای استاندارد کلاس پایه برای همه استثناهای داخلی به جز StopIteration و SystemExit. 5 خطای حسابی کلاس پایه برای تمام خطاهایی که برای محاسبه عددی رخ می دهد. 6 OverflowError هنگامی که یک محاسبه از حداکثر حد مجاز برای یک نوع عددی فراتر می رود، افزایش می یابد. 7 FloatingPointError وقتی محاسبه ممیز شناور با شکست مواجه می شود، افزایش می یابد. 8 ZeroDivisonError هنگامی که تقسیم یا مدول بر صفر برای همه انواع عددی انجام می شود، افزایش می یابد. 9 خطای ادعا در صورت شکست عبارت Assert مطرح می شود. 10 AttributeError در صورت عدم موفقیت مرجع یا تخصیص مشخصه افزایش می یابد. 11 خطای EOFE زمانی که هیچ ورودی از تابع raw_input() یا input() وجود نداشته باشد و به انتهای فایل رسیده باشد، افزایش می یابد. 12 ImportError هنگامی که یک بیانیه واردات ناموفق است، افزایش می یابد. 13 صفحه کلید وقفه هنگامی که کاربر اجرای برنامه را قطع می کند، معمولاً با فشار دادن Ctrl+c افزایش می یابد. 14 خطای جستجو کلاس پایه برای همه خطاهای جستجو. 15 IndexError هنگامی که یک شاخص در یک دنباله یافت نمی شود، افزایش می یابد. 16 خطای کلیدی هنگامی که کلید مشخص شده در فرهنگ لغت یافت نمی شود، افزایش می یابد. 17 NameError هنگامی که یک شناسه در فضای نام محلی یا جهانی یافت نمی شود، افزایش می یابد. 18 UnboundLocalError هنگام تلاش برای دسترسی به یک متغیر محلی در یک تابع یا روش، اما هیچ مقداری به آن اختصاص داده نشده است، افزایش می یابد. 19 خطای محیطی کلاس پایه برای تمام استثناهایی که خارج از محیط پایتون رخ می دهند. 20 خطای IO هنگامی که عملیات ورودی/خروجی با شکست مواجه می‌شود، مانند عبارت print یا تابع open() هنگام تلاش برای باز کردن فایلی که وجود ندارد، افزایش می‌یابد. 21 خطای OSE برای خطاهای مربوط به سیستم عامل افزایش یافته است. 22 اشتباه نوشتاری هنگامی که خطایی در نحو پایتون وجود دارد، افزایش می یابد. 23 IndentationError زمانی که تورفتگی به درستی مشخص نشده باشد، بلند می شود. 24 خطای سیستم هنگامی که مفسر یک مشکل داخلی پیدا می کند، مطرح می شود، اما وقتی با این خطا مواجه می شود، مفسر پایتون خارج نمی شود. 25 SystemExit هنگامی که مفسر پایتون با استفاده از تابع sys.exit () خارج می شود، افزایش می یابد. اگر در کد مدیریت نشود، باعث خروج مفسر می شود. 26 TypeError هنگامی که عملیات یا عملکردی تلاش می شود که برای نوع داده مشخص شده نامعتبر است، افزایش می یابد. 27 ValueError زمانی که تابع داخلی برای یک نوع داده دارای آرگومان های معتبر باشد، اما آرگومان ها دارای مقادیر نامعتبر تعیین شده باشند، افزایش می یابد. 28 خطای زمان اجرا زمانی مطرح می شود که خطای ایجاد شده در هیچ دسته ای قرار نگیرد. 29 NotImplementedError زمانی مطرح می‌شود که یک متد انتزاعی که باید در یک کلاس ارثی پیاده‌سازی شود، در واقع پیاده‌سازی نشده باشد.

آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون ۳

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون ۳ خواهیم پرداخت.

پیشنهاد ویژه : آموزش طراحی وب سایت با پایتون

ساده ترین راه برای تولید خروجی استفاده از عبارت print است که در آن می توانید صفر یا چند عبارت را که با کاما از هم جدا شده اند ارسال کنید. این تابع عباراتی را که ارسال می کنید به یک رشته تبدیل می کند و نتیجه را به صورت زیر در خروجی استاندارد می نویسد

#!/usr/bin/python3

print ("Python is really a great language,", "isn't it?")

 

این نتیجه زیر را در صفحه استاندارد شما ایجاد می کند –

Python is really a great language, isn't it?

 

خواندن ورودی صفحه کلید

پایتون ۲ دارای دو تابع داخلی برای خواندن داده ها از ورودی استاندارد است که به طور پیش فرض از صفحه کلید می آید. این توابع عبارتند از ()input و ()raw_input

در پایتون ۳، تابع ()raw_input منسوخ شده است. علاوه بر این، توابع ()input داده ها را از صفحه کلید به عنوان رشته می خوانند، صرف نظر از اینکه با نقل قول (” یا “”) محصور شده باشند یا نه.

تابع ورودی

تابع input([prompt]) معادل raw_input است، با این تفاوت که فرض می‌کند ورودی یک عبارت پایتون معتبر است و نتیجه ارزیابی شده را به شما برمی‌گرداند.

#!/usr/bin/python3

>>> x = input("something:")
something:10

>>> x
'۱۰'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''

>>> x

 

باز کردن و بستن فایل ها

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

پایتون توابع اساسی و روش های لازم برای دستکاری فایل ها را به صورت پیش فرض ارائه می کند. شما می توانید بیشتر دستکاری فایل را با استفاده از یک شی فایل انجام دهید.

 

تابع ()open

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

file object = open(file_name [, access_mode][, buffering])

 

در اینجا جزئیات پارامتر وجود دارد –

  • file_name – آرگومان file_name یک مقدار رشته ای است که حاوی نام فایلی است که می خواهید به آن دسترسی داشته باشید.
  • access_mode – حالت access_mode حالتی را که فایل باید در آن باز شود، یعنی خواندن، نوشتن، الحاق و غیره تعیین می کند. فهرست کاملی از مقادیر ممکن در جدول زیر آمده است. این یک پارامتر اختیاری است و حالت دسترسی به فایل پیش‌فرض خوانده می‌شود (r).
  • buffering – اگر مقدار بافر روی ۰ تنظیم شود، بافری انجام نمی شود. اگر مقدار بافر ۱ باشد، بافر خط هنگام دسترسی به فایل انجام می شود. اگر مقدار بافر را به عنوان یک عدد صحیح بزرگتر از ۱ مشخص کنید، عمل بافر با اندازه بافر مشخص شده انجام می شود. اگر منفی باشد، اندازه بافر پیش فرض سیستم است (رفتار پیش فرض).

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

۱ r

فایلی را فقط برای خواندن باز می کند. نشانگر فایل در ابتدای فایل قرار می گیرد. این حالت پیش فرض است.

۲ rb

فایلی را برای خواندن فقط در قالب باینری باز می کند. نشانگر فایل در ابتدای فایل قرار می گیرد. این حالت پیش فرض است.

۳ r+

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

۴ rb+

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

۵ w

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

۶ wb

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

۷ w+

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

۸ wb+

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

۹ a

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

۱۰ ab

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

۱۱ a+

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

۱۲ ab+

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

 

 

فایل Object Attributes

 

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

در اینجا لیستی از تمام ویژگی های مربوط به یک شی فایل − آمده است

۱ file.closed

اگر فایل بسته باشد true، در غیر این صورت false را برمی‌گرداند.

۲ file.mode

حالت دسترسی را که فایل با آن باز شده است برمی گرداند.

۳ file.name

نام فایل را برمی گرداند.

 

توجه – ویژگی softspace در Python 3.x پشتیبانی نمی‌شود

مثال

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
print ("Closed or not : ", fo.closed)
print ("Opening mode : ", fo.mode)
fo.close()

 

این نتیجه زیر را ایجاد می کند –

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb

 

متد ()close یک شی فایل، اطلاعات نانوشته را پاک می کند و شی فایل را می بندد، پس از آن دیگر نمی توان نوشت.

پایتون به طور خودکار یک فایل را می بندد زمانی که شی مرجع یک فایل دوباره به فایل دیگری اختصاص داده شود. استفاده از متد ()close برای بستن یک فایل تمرین خوبی است.

fileObject.close();

 

مثال

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)

# Close opened file
fo.close()

 

این نتیجه زیر را ایجاد می کند –

Name of the file:  foo.txt

 

خواندن و نوشتن فایل ها

شی فایل مجموعه ای از روش های دسترسی را برای آسان تر کردن زندگی ما فراهم می کند. خواهیم دید که چگونه از متدهای ()read و ()write برای خواندن و نوشتن فایل ها استفاده کنیم.

متد ()write

متد ()write هر رشته ای را در یک فایل باز می نویسد. توجه به این نکته مهم است که رشته های پایتون می توانند داده های باینری داشته باشند و نه فقط متن.

متد ()write یک کاراکتر خط جدید (‘\n’) به انتهای رشته اضافه نمی کند

fileObject.write(string);

 

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

 

مثال

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "w")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

 

روش بالا فایل foo.txt را ایجاد می کند و محتوای داده شده را در آن فایل می نویسد و در نهایت آن فایل را می بندد. اگر این فایل را باز کنید، محتوای زیر را دارد –

Python is a great language.
Yeah its great!!

 

متد ()read

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

fileObject.read([count]);

 

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

مثال

اجازه دهید یک فایل foo.txt را که در بالا ایجاد کردیم، برداریم.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Close opened file
fo.close()

 

این نتیجه زیر را ایجاد می کند –

Read String is :  Python is

 

موقعیت های فایل

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

روش seek(offset[, from]) موقعیت فعلی فایل را تغییر می دهد. آرگومان offset تعداد بایت هایی که باید جابجا شوند را نشان می دهد. آرگومان from موقعیت مرجع را مشخص می کند که بایت ها باید از آنجا جابجا شوند.

اگر from روی ۰ تنظیم شود، ابتدای فایل به عنوان موقعیت مرجع استفاده می شود. اگر روی ۱ تنظیم شود، موقعیت فعلی به عنوان موقعیت مرجع استفاده می شود. اگر روی ۲ تنظیم شود، انتهای فایل به عنوان موقعیت مرجع در نظر گرفته می شود.

 

مثال

اجازه دهید یک فایل foo.txt را که در بالا ایجاد کردیم، برداریم.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Check current position
position = fo.tell()
print ("Current file position : ", position)

# Reposition pointer at the beginning once again
position = fo.seek(0, 0)
str = fo.read(10)
print ("Again read String is : ", str)

# Close opened file
fo.close()

 

این نتیجه زیر را ایجاد می کند –

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

 

تغییر نام و حذف فایل ها

ماژول سیستم عامل پایتون روش هایی را ارائه می دهد که به شما در انجام عملیات پردازش فایل مانند تغییر نام و حذف فایل ها کمک می کند.

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

متد ()rename

متد ()rename دو آرگومان دارد، نام فایل فعلی و نام فایل جدید.

os.rename(current_file_name, new_file_name)

 

مثال

در زیر مثالی برای تغییر نام یک فایل موجود test1.txt آمده است

#!/usr/bin/python3
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

 

متد remove()

شما می توانید از متد remove() برای حذف فایل ها با ارائه نام فایلی که قرار است حذف شود به عنوان آرگومان استفاده کنید.

os.remove(file_name)

 

مثال

در زیر مثالی برای حذف یک فایل موجود test2.txt آمده است

#!/usr/bin/python3
import os

# Delete file test2.txt
os.remove("text2.txt")

 

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

همه فایل‌ها در دایرکتوری‌های مختلف قرار دارند و پایتون نیز مشکلی در مدیریت آن‌ها ندارد. ماژول os چندین روش دارد که به شما در ایجاد، حذف و تغییر دایرکتوری ها کمک می کند.

متد ()mkdir

می توانید از متد ()mkdir ماژول os برای ایجاد دایرکتوری ها در دایرکتوری فعلی استفاده کنید. شما باید یک آرگومان به این متد ارائه دهید که حاوی نام دایرکتوری است که باید ایجاد شود.

os.mkdir("newdir")

 

مثال

در زیر مثالی برای ایجاد یک آزمایش دایرکتوری در دایرکتوری فعلی آمده است

#!/usr/bin/python3
import os

# Create a directory "test"
os.mkdir("test")

 

متد ()chdir

برای تغییر دایرکتوری فعلی می توانید از متد ()chdir استفاده کنید. متد ()chdir یک آرگومان می گیرد که نام دایرکتوری است که می خواهید دایرکتوری فعلی را ایجاد کنید.

os.chdir("newdir")

 

مثال

در زیر مثالی برای رفتن به فهرست “/home/newdir” آمده است

#!/usr/bin/python3
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

 

متد ()getcwd

متد ()getcwd دایرکتوری کاری فعلی را نمایش می دهد.

os.getcwd()

 

مثال

در زیر مثالی برای ارائه دایرکتوری فعلی آمده است

#!/usr/bin/python3
import os

# This would give location of the current directory
os.getcwd()

 

متد ()rmdir

متد ()rmdir دایرکتوری را حذف می کند که به عنوان آرگومان در متد ارسال می شود.

قبل از حذف دایرکتوری، تمام محتویات موجود در آن باید حذف شوند.

os.rmdir('dirname')

 

مثال

در زیر مثالی برای حذف پوشه “/tmp/test” آورده شده است. لازم است که نام کاملاً واجد شرایط دایرکتوری داده شود، در غیر این صورت آن دایرکتوری را در فهرست فعلی جستجو می کند.

#!/usr/bin/python3
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

 

روش های مرتبط با فایل و دایرکتوری

سه منبع مهم وجود دارد که طیف گسترده ای از روش های کاربردی را برای مدیریت و دستکاری فایل ها و دایرکتوری ها در سیستم عامل های ویندوز و یونیکس ارائه می دهند. آنها به شرح زیر هستند –

روش های شی فایل

  • شی فایل توابعی را برای دستکاری فایل ها فراهم می کند.
  • روش های شیء سیستم عامل
  • این روش هایی را برای پردازش فایل ها و همچنین دایرکتوری ها فراهم می کند.

 

منبع.

 

 

 

لیست جلسات قبل آموزش برنامه نوبسی پایتون ۳

  1. آموزش برنامه نویسی پایتون ۳
  2. آموزش موارد جدید در برنامه نویسی پایتون ۳
  3. آموزش مرور کلی برنامه نویسی پایتون ۳
  4. آموزش راه اندازی محیط برنامه نویسی پایتون ۳
  5. آموزش نحو در برنامه نویسی پایتون ۳
  6. آموزش انواع متغیرها در برنامه نویسی پایتون ۳
  7.  آموزش عملگرهای پایه در برنامه نویسی پایتون ۳
  8.  آموزش تصمیم گیری در برنامه نویسی پایتون ۳
  9.  آموزش حلقه ها در برنامه نویسی پایتون ۳
  10. آموزش اعداد در برنامه نویسی پایتون ۳
  11. آموزش رشته ها در برنامه نویسی پایتون ۳
  12.  آموزش لیست ها در برنامه نویسی پایتون ۳
  13.  آموزش تاپل ها در برنامه نویسی پایتون ۳
  14. آموزش دیکشنری در برنامه نویسی پایتون ۳
  15.  آموزش تاریخ و زمان در برنامه نویسی پایتون ۳
  16.  آموزش توابع در برنامه نویسی پایتون ۳
  17. آموزش ماژول ها در برنامه نویسی پایتون ۳
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه