آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون 3
آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون 3
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون 3 خواهیم پرداخت.
پیشنهاد ویژه : آموزش طراحی وب سایت با پایتون
ساده ترین راه برای تولید خروجی استفاده از عبارت print است که در آن می توانید صفر یا چند عبارت را که با کاما از هم جدا شده اند ارسال کنید. این تابع عباراتی را که ارسال می کنید به یک رشته تبدیل می کند و نتیجه را به صورت زیر در خروجی استاندارد می نویسد
1 2 3 |
#!/usr/bin/python3 print ("Python is really a great language,", "isn't it?") |
این نتیجه زیر را در صفحه استاندارد شما ایجاد می کند –
1 |
Python is really a great language, isn't it? |
خواندن ورودی صفحه کلید
پایتون 2 دارای دو تابع داخلی برای خواندن داده ها از ورودی استاندارد است که به طور پیش فرض از صفحه کلید می آید. این توابع عبارتند از ()input و ()raw_input
در پایتون 3، تابع ()raw_input منسوخ شده است. علاوه بر این، توابع ()input داده ها را از صفحه کلید به عنوان رشته می خوانند، صرف نظر از اینکه با نقل قول (” یا “”) محصور شده باشند یا نه.
تابع ورودی
تابع input([prompt]) معادل raw_input است، با این تفاوت که فرض میکند ورودی یک عبارت پایتون معتبر است و نتیجه ارزیابی شده را به شما برمیگرداند.
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/usr/bin/python3 >>> x = input("something:") something:10 >>> x '10' >>> x = input("something:") something:'10' #entered data treated as string with or without '' >>> x |
باز کردن و بستن فایل ها
تا به حال، شما در حال خواندن و نوشتن با ورودی و خروجی استاندارد بوده اید. اکنون، نحوه استفاده از فایل های داده واقعی را خواهیم دید.
پایتون توابع اساسی و روش های لازم برای دستکاری فایل ها را به صورت پیش فرض ارائه می کند. شما می توانید بیشتر دستکاری فایل را با استفاده از یک شی فایل انجام دهید.
تابع ()open
قبل از اینکه بتوانید فایلی را بخوانید یا بنویسید، باید آن را با استفاده از تابع ()open داخلی پایتون باز کنید. این تابع یک شی فایل ایجاد می کند که برای فراخوانی سایر روش های پشتیبانی مرتبط با آن استفاده می شود.
1 |
file object = open(file_name [, access_mode][, buffering]) |
در اینجا جزئیات پارامتر وجود دارد –
- file_name – آرگومان file_name یک مقدار رشته ای است که حاوی نام فایلی است که می خواهید به آن دسترسی داشته باشید.
- access_mode – حالت access_mode حالتی را که فایل باید در آن باز شود، یعنی خواندن، نوشتن، الحاق و غیره تعیین می کند. فهرست کاملی از مقادیر ممکن در جدول زیر آمده است. این یک پارامتر اختیاری است و حالت دسترسی به فایل پیشفرض خوانده میشود (r).
- buffering – اگر مقدار بافر روی 0 تنظیم شود، بافری انجام نمی شود. اگر مقدار بافر 1 باشد، بافر خط هنگام دسترسی به فایل انجام می شود. اگر مقدار بافر را به عنوان یک عدد صحیح بزرگتر از 1 مشخص کنید، عمل بافر با اندازه بافر مشخص شده انجام می شود. اگر منفی باشد، اندازه بافر پیش فرض سیستم است (رفتار پیش فرض).
در اینجا لیستی از حالت های مختلف باز کردن یک فایل آمده است
1 | r
فایلی را فقط برای خواندن باز می کند. نشانگر فایل در ابتدای فایل قرار می گیرد. این حالت پیش فرض است. |
2 | rb
فایلی را برای خواندن فقط در قالب باینری باز می کند. نشانگر فایل در ابتدای فایل قرار می گیرد. این حالت پیش فرض است. |
3 | r+
فایلی را برای خواندن و نوشتن باز می کند. نشانگر فایل در ابتدای فایل قرار داده شده است. |
4 | rb+
فایلی را برای خواندن و نوشتن در قالب باینری باز می کند. نشانگر فایل در ابتدای فایل قرار داده شده است. |
5 | w
فایلی را فقط برای نوشتن باز می کند. در صورت وجود فایل، فایل را رونویسی می کند. اگر فایل وجود نداشته باشد، یک فایل جدید برای نوشتن ایجاد می کند. |
6 | wb
فایلی را برای نوشتن فقط در فرمت باینری باز می کند. در صورت وجود فایل، فایل را رونویسی می کند. اگر فایل وجود نداشته باشد، یک فایل جدید برای نوشتن ایجاد می کند. |
7 | w+
فایلی را برای نوشتن و خواندن باز می کند. در صورت وجود فایل، فایل موجود را بازنویسی می کند. اگر فایل وجود نداشته باشد، یک فایل جدید برای خواندن و نوشتن ایجاد می کند. |
8 | wb+
فایلی را برای نوشتن و خواندن در قالب باینری باز می کند. در صورت وجود فایل، فایل موجود را بازنویسی می کند. اگر فایل وجود نداشته باشد، یک فایل جدید برای خواندن و نوشتن ایجاد می کند. |
9 | a
فایلی را برای الحاق باز می کند. اگر فایل موجود باشد، نشانگر فایل در انتهای فایل قرار دارد. یعنی فایل در حالت ضمیمه است. اگر فایل وجود نداشته باشد، یک فایل جدید برای نوشتن ایجاد می کند. |
10 | ab
فایلی را برای افزودن به فرمت باینری باز می کند. اگر فایل موجود باشد، نشانگر فایل در انتهای فایل قرار دارد. یعنی فایل در حالت ضمیمه است. اگر فایل وجود نداشته باشد، یک فایل جدید برای نوشتن ایجاد می کند. |
11 | a+
فایلی را هم برای افزودن و هم برای خواندن باز می کند. اگر فایل موجود باشد، نشانگر فایل در انتهای فایل قرار دارد. فایل در حالت الحاق باز می شود. اگر فایل وجود نداشته باشد، یک فایل جدید برای خواندن و نوشتن ایجاد می کند. |
12 | ab+
فایلی را برای ضمیمه و خواندن در قالب باینری باز می کند. اگر فایل موجود باشد، نشانگر فایل در انتهای فایل قرار دارد. فایل در حالت الحاق باز می شود. اگر فایل وجود نداشته باشد، یک فایل جدید برای خواندن و نوشتن ایجاد می کند. |
فایل Object Attributes
هنگامی که یک فایل باز می شود و یک شی فایل دارید، می توانید اطلاعات مختلفی در رابطه با آن فایل دریافت کنید.
در اینجا لیستی از تمام ویژگی های مربوط به یک شی فایل − آمده است
1 | file.closed
اگر فایل بسته باشد true، در غیر این صورت false را برمیگرداند. |
2 | file.mode
حالت دسترسی را که فایل با آن باز شده است برمی گرداند. |
3 | file.name
نام فایل را برمی گرداند. |
توجه – ویژگی softspace در Python 3.x پشتیبانی نمیشود
مثال
1 2 3 4 5 6 7 8 |
#!/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() |
این نتیجه زیر را ایجاد می کند –
1 2 3 |
Name of the file: foo.txt Closed or not : False Opening mode : wb |
متد ()close یک شی فایل، اطلاعات نانوشته را پاک می کند و شی فایل را می بندد، پس از آن دیگر نمی توان نوشت.
پایتون به طور خودکار یک فایل را می بندد زمانی که شی مرجع یک فایل دوباره به فایل دیگری اختصاص داده شود. استفاده از متد ()close برای بستن یک فایل تمرین خوبی است.
1 |
fileObject.close(); |
مثال
1 2 3 4 5 6 7 8 |
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "wb") print ("Name of the file: ", fo.name) # Close opened file fo.close() |
این نتیجه زیر را ایجاد می کند –
1 |
Name of the file: foo.txt |
خواندن و نوشتن فایل ها
شی فایل مجموعه ای از روش های دسترسی را برای آسان تر کردن زندگی ما فراهم می کند. خواهیم دید که چگونه از متدهای ()read و ()write برای خواندن و نوشتن فایل ها استفاده کنیم.
متد ()write
متد ()write هر رشته ای را در یک فایل باز می نویسد. توجه به این نکته مهم است که رشته های پایتون می توانند داده های باینری داشته باشند و نه فقط متن.
متد ()write یک کاراکتر خط جدید (‘\n’) به انتهای رشته اضافه نمی کند
1 |
fileObject.write(string); |
در اینجا، پارامتر پاس، محتوایی است که باید در فایل باز شده نوشته شود.
مثال
1 2 3 4 5 6 7 8 |
#!/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 را ایجاد می کند و محتوای داده شده را در آن فایل می نویسد و در نهایت آن فایل را می بندد. اگر این فایل را باز کنید، محتوای زیر را دارد –
1 2 |
Python is a great language. Yeah its great!! |
متد ()read
متد ()read یک رشته را از یک فایل باز می خواند. توجه به این نکته مهم است که رشته های پایتون می توانند داده های باینری داشته باشند. جدا از داده های متنی
1 |
fileObject.read([count]); |
در اینجا، پارامتر پاس شده تعداد بایت هایی است که باید از فایل باز شده خوانده شود. این روش از ابتدای فایل شروع به خواندن میکند و اگر شمارش از دست رفته باشد، سعی میکند تا حد امکان مطالعه کند، شاید تا پایان فایل.
مثال
اجازه دهید یک فایل foo.txt را که در بالا ایجاد کردیم، برداریم.
1 2 3 4 5 6 7 8 9 |
#!/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() |
این نتیجه زیر را ایجاد می کند –
1 |
Read String is : Python is |
موقعیت های فایل
متد ()tell موقعیت فعلی درون فایل را به شما می گوید. به عبارت دیگر، خواندن یا نوشتن بعدی در همان تعداد بایت از ابتدای فایل اتفاق می افتد.
روش seek(offset[, from]) موقعیت فعلی فایل را تغییر می دهد. آرگومان offset تعداد بایت هایی که باید جابجا شوند را نشان می دهد. آرگومان from موقعیت مرجع را مشخص می کند که بایت ها باید از آنجا جابجا شوند.
اگر from روی 0 تنظیم شود، ابتدای فایل به عنوان موقعیت مرجع استفاده می شود. اگر روی 1 تنظیم شود، موقعیت فعلی به عنوان موقعیت مرجع استفاده می شود. اگر روی 2 تنظیم شود، انتهای فایل به عنوان موقعیت مرجع در نظر گرفته می شود.
مثال
اجازه دهید یک فایل foo.txt را که در بالا ایجاد کردیم، برداریم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/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() |
این نتیجه زیر را ایجاد می کند –
1 2 3 |
Read String is : Python is Current file position : 10 Again read String is : Python is |
تغییر نام و حذف فایل ها
ماژول سیستم عامل پایتون روش هایی را ارائه می دهد که به شما در انجام عملیات پردازش فایل مانند تغییر نام و حذف فایل ها کمک می کند.
برای استفاده از این ماژول، ابتدا باید آن را وارد کنید و سپس می توانید هر تابع مرتبط را فراخوانی کنید.
متد ()rename
متد ()rename دو آرگومان دارد، نام فایل فعلی و نام فایل جدید.
1 |
os.rename(current_file_name, new_file_name) |
مثال
در زیر مثالی برای تغییر نام یک فایل موجود test1.txt آمده است
1 2 3 4 5 |
#!/usr/bin/python3 import os # Rename a file from test1.txt to test2.txt os.rename( "test1.txt", "test2.txt" ) |
متد remove()
شما می توانید از متد remove() برای حذف فایل ها با ارائه نام فایلی که قرار است حذف شود به عنوان آرگومان استفاده کنید.
1 |
os.remove(file_name) |
مثال
در زیر مثالی برای حذف یک فایل موجود test2.txt آمده است
1 2 3 4 5 |
#!/usr/bin/python3 import os # Delete file test2.txt os.remove("text2.txt") |
دایرکتوری ها در پایتون
همه فایلها در دایرکتوریهای مختلف قرار دارند و پایتون نیز مشکلی در مدیریت آنها ندارد. ماژول os چندین روش دارد که به شما در ایجاد، حذف و تغییر دایرکتوری ها کمک می کند.
متد ()mkdir
می توانید از متد ()mkdir ماژول os برای ایجاد دایرکتوری ها در دایرکتوری فعلی استفاده کنید. شما باید یک آرگومان به این متد ارائه دهید که حاوی نام دایرکتوری است که باید ایجاد شود.
1 |
os.mkdir("newdir") |
مثال
در زیر مثالی برای ایجاد یک آزمایش دایرکتوری در دایرکتوری فعلی آمده است
1 2 3 4 5 |
#!/usr/bin/python3 import os # Create a directory "test" os.mkdir("test") |
متد ()chdir
برای تغییر دایرکتوری فعلی می توانید از متد ()chdir استفاده کنید. متد ()chdir یک آرگومان می گیرد که نام دایرکتوری است که می خواهید دایرکتوری فعلی را ایجاد کنید.
1 |
os.chdir("newdir") |
مثال
در زیر مثالی برای رفتن به فهرست “/home/newdir” آمده است
1 2 3 4 5 |
#!/usr/bin/python3 import os # Changing a directory to "/home/newdir" os.chdir("/home/newdir") |
متد ()getcwd
متد ()getcwd دایرکتوری کاری فعلی را نمایش می دهد.
1 |
os.getcwd() |
مثال
در زیر مثالی برای ارائه دایرکتوری فعلی آمده است
1 2 3 4 5 |
#!/usr/bin/python3 import os # This would give location of the current directory os.getcwd() |
متد ()rmdir
متد ()rmdir دایرکتوری را حذف می کند که به عنوان آرگومان در متد ارسال می شود.
قبل از حذف دایرکتوری، تمام محتویات موجود در آن باید حذف شوند.
1 |
os.rmdir('dirname') |
مثال
در زیر مثالی برای حذف پوشه “/tmp/test” آورده شده است. لازم است که نام کاملاً واجد شرایط دایرکتوری داده شود، در غیر این صورت آن دایرکتوری را در فهرست فعلی جستجو می کند.
1 2 3 4 5 |
#!/usr/bin/python3 import os # This would remove "/tmp/test" directory. os.rmdir( "/tmp/test" ) |
روش های مرتبط با فایل و دایرکتوری
سه منبع مهم وجود دارد که طیف گسترده ای از روش های کاربردی را برای مدیریت و دستکاری فایل ها و دایرکتوری ها در سیستم عامل های ویندوز و یونیکس ارائه می دهند. آنها به شرح زیر هستند –
روش های شی فایل
- شی فایل توابعی را برای دستکاری فایل ها فراهم می کند.
- روش های شیء سیستم عامل
- این روش هایی را برای پردازش فایل ها و همچنین دایرکتوری ها فراهم می کند.
لیست جلسات قبل آموزش برنامه نوبسی پایتون 3
- آموزش برنامه نویسی پایتون 3
- آموزش موارد جدید در برنامه نویسی پایتون 3
- آموزش مرور کلی برنامه نویسی پایتون 3
- آموزش راه اندازی محیط برنامه نویسی پایتون 3
- آموزش نحو در برنامه نویسی پایتون 3
- آموزش انواع متغیرها در برنامه نویسی پایتون 3
- آموزش عملگرهای پایه در برنامه نویسی پایتون 3
- آموزش تصمیم گیری در برنامه نویسی پایتون 3
- آموزش حلقه ها در برنامه نویسی پایتون 3
- آموزش اعداد در برنامه نویسی پایتون 3
- آموزش رشته ها در برنامه نویسی پایتون 3
- آموزش لیست ها در برنامه نویسی پایتون 3
- آموزش تاپل ها در برنامه نویسی پایتون 3
- آموزش دیکشنری در برنامه نویسی پایتون 3
- آموزش تاریخ و زمان در برنامه نویسی پایتون 3
- آموزش توابع در برنامه نویسی پایتون 3
- آموزش ماژول ها در برنامه نویسی پایتون 3
دیدگاه شما