در این آموزش، ما روی کار با file در پایتون کار خواهیم کرد. با به نحوه استفاده از پایتون برای خواندن یک file ، نوشتن در یک file ، حذف file ها و موارد دیگر خواهیم پرداخت. پس بیایید شروع کنیم.
کار با file ها در پایتون
در این آموزش، ما با استفاده از یک file ورودی میگیریم. این بدان معناست که ما طی کار با file ها در پایتون، از روی آنها میخوانیم و مینویسم. برای انجام این کار، ما باید به طور ثابت برخی مراحل را انجام دهیم. آنها عبارتند از:
- یک file را باز کنید
- از آن file ورودی بگیرید / خروجی را در آن file بنویسید
- File را ببندید
در این مطلب، همچنین برخی کارهای دیگر با file در پایتون مانند copy file و delete file را یاد خواهیم گرفت.
چرا کار با file در پایتون ضروری است؟
هنگام کار با مجموعه دادههای بزرگ برای حل مسائل مربوط به یادگیری ماشین، کار با file ها یک ضرورت اساسی است. از آنجایی که زبان برنامه نویسی پایتون عمدتاً برای علم داده (Data Science) مورد استفاده قرار میگیرد، باید در عملیاتهای file مختلفی که پایتون ارائه میدهد، مهارت داشته باشید.
پس اجازه دهید برخی از موارد عملیات file در پایتون را در اینجا بررسی کنیم.
1. یک file در پایتون را با تابع open() باز کنید
اولین قدم برای کار با file ها در پایتون این است که یاد بگیرید چگونه یک file را باز کنید. با استفاده از متد open() ، میتوانید file ها را باز کنید.
تابع open() در پایتون دو آرگومان (arguments) را میپذیرد. اولی file name به همراه مسیر (path) کامل و دومی حالت file open است.
در زیر، برخی از حالتهای رایج خواندن file ها را لیست کردهایم:
‘r’: این حالت نشان میدهد که file فقط برای خواندن باز خواهد بود.
‘w’: این حالت نشان میدهد که file فقط برای نوشتن باز خواهد بود. اگر file به این اسم وجود نداشته باشد، یک file جدید ایجاد میکند.
‘a’: این حالت نشان میدهد که خروجی آن برنامه به خروجی قبلی آن file اضافه میشود.
‘+r’: این حالت نشان میدهد که file هم برای خواندن و هم برای نوشتن باز خواهد بود.
علاوه بر این، در سیستم عامل ویندوز، میتوانید ‘b’ را برای دسترسی باینری به file اضافه کنید. این بدین دلیل است که ویندوز بین یک file متنی باینری و یک file متنی معمولی، تفاوت قائل میشود.
فرض کنید، نام file متنی ‘file.txt’ را در همان لیستی که کد ما در آن قرار دارد، قرار میدهیم. حالا میخواهیم آن فایل را باز کنیم.
با این حال، تابع open(filename, mode) یک file object را برمیگرداند. با آن file object ، میتوانید کار بعدی خود با file در پایتون را ادامه دهید.

#directory: /home/imtiaz/code.py
text_file = open('file.txt','r')
#Another method using full location
text_file2 = open('/home/imtiaz/file.txt','r')
print('First Method')
print(text_file)
print('Second Method')
print(text_file2)
خروجی کد زیر خواهد بود:
================== RESTART: /home/imtiaz/code.py ==================
First Method
Second Method
>>>
2. خواندن و نوشتن روی file ها در پایتون
پایتون متدهای مختلفی را برای خواندن و نوشتن در file هایی ارائه میدهد که در آنها، هر یک از توابع به طور متفاوتی رفتار میکنند. یکی از موارد مهمی که باید به آن توجه کنید، حالت عملیات file است. برای خواندن یک file در پایتون، باید فایل را در write mode یا read mode پیدا کنید. در حالی که برای نوشتن یک file در پایتون، باید file را درwrite mode باز کنید.
در اینجا برخی از توابع پایتون را نام بردهایم که به شما امکان خواندن و نوشتن file ها را میدهند:
- read() : این تابع کل file را میخواند و یک رشته را برمیگرداند.
- readline() : این تابع خطوط آن file را میخواند و به صورت رشته برمیگرداند. اگر برای n مین بار فراخوانده شود، خط n را fetch میکند.
- readlines() : این تابع لیستی را برمیگرداند که در آن هر عنصر یک خط از آن file است.
- write() : این تابع یک تولی ثابت از کاراکترها را در یک file در پایتون مینویسد.
- writelines() : این تابع لیستی از رشتهها را مینویسد.
- append() : این تابع به جای بازنویسی فایل، رشته را به فایل اضافه میکند.
بیایید یک فایل ‘abc.txt’ را در نظر بگیریم و خطوط جداگانهای از فایل را با یک for loop بخوانیم:
#open the file
text_file = open('/Users/pankaj/abc.txt','r')
#get the list of line
line_list = text_file.readlines();
#for each line from the list, print the line
for line in line_list:
print(line)
text_file.close() #don't forget to close the file
خروجی:

اکنون که میدانیم یک file در پایتون را چگونه بخوانیم، بیایید جلوتر برویم و یک عملیات نوشتن را با تابع writelines() انجام دهیم.
#open the file
text_file = open('/Users/pankaj/file.txt','w')
#initialize an empty list
word_list= []
#iterate 4 times
for i in range (1, 5):
print("Please enter data: ")
line = input() #take input
word_list.append(line) #append to the list
text_file.writelines(word_list) #write 4 words to the file
text_file.close() #don’t forget to close the file
خروجی:

3. با استفاده از متد shutil() فایلها را در پایتون کپی کنید
ما میتوانیم از ماژول shutil برای کپی کردن file ها در پایتون استفاده کنیم. این ابزار به ما اجازه میدهد تا عملیات کپی و جابجایی در پایتون را روی file های مختلف انجام دهیم. بیایید با یک مثال روی این موضوع کار کنیم:
import shutil
shutil.copy2('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copy2.txt')
#another way to copy file
shutil.copyfile('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copyfile.txt')
print("File Copy Done")
4. فایلهای موجود در پایتون را با متد shutil.os.remove() حذف کنید
ماژول shutil پایتون، متد remove() را برای حذف فایلها از file system ارائه میدهد. بیایید نگاهی به نحوه انجام عملیات حذف (delete) در پایتون بیندازیم.
import shutil
import os
#two ways to delete file
shutil.os.remove('/Users/pankaj/abc_copy2.txt')
os.remove('/Users/pankaj/abc_copy2.txt')
5. یک file باز در پایتون را با متد close() ببندید
هنگامی که یک file در پایتون را باز میکنید، بستن آن پس از ایجاد تغییرات بسیار مهم است. این کار هرگونه تغییری را که قبلاً انجام دادهاید، ذخیره میکند، فایل را از حافظه حذف میکند و از خواندن یا نوشتن بیشتر در برنامه جلوگیری میکند.
Syntax برای بستن یک file باز در پایتون:
fileobject.close()
اگر به مثالهای قبلی خود ادامه دهیم که در آن فایلها را میخوانیم، در اینجا نحوه بستن فایل هم آمده است:
text_file = open('/Users/pankaj/abc.txt','r')
# some file operations here
text_file.close()
علاوه بر این، اگر از بلوک with استفاده میکنید، میتوانید از بستن دستی فایلها اجتناب کنید. به محض اجرای بلوک with ، فایلها بسته میشوند و دیگر برای خواندن و نوشتن در دسترس نیستند.
6. Python FileNotFoundError
دریافت FileNotFoundError هنگام کار با file ها در پایتون رایج است. با ارائه مسیرهای کامل فایل (complete file paths) هنگام ایجاد file object ، به راحتی میتوان از آن اجتناب کرد.
File "/Users/pankaj/Desktop/string1.py", line 2, in
text_file = open('/Users/pankaj/Desktop/abc.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: '/Users/pankaj/Desktop/abc.txt'
برای رفع FileNotFoundError ، فقط باید بررسی کنید آیا مسیری که برای متد باز کردن file ذکر کردهاید، صحیح است یا خیر.
نتیجهگیری
اینها عملیات file در پایتون بودند. راههای بسیار بیشتری برای استفاده از file ها در پایتون وجود دارد، که شامل خواندن دادههای CSV و موارد دیگر میشود.
امیدوارم از خواندن این مطلب لذت برده باشد!
منابع:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files
ترجمه از: digitalocean
Leave feedback about this