آموزش مدیریت فایل در پایتون؛ بررسی عملیات پایه و پیشرفته روی فایلها
در این مقاله میخوانید
پایتون را بهعنوان زبان برنامهنویسی محبوب و قدرتمندی میشناسیم که بهطورگسترده در زمینههای مختلف ازجمله محاسبات علمی و تجزیهوتحلیل دادهها و توسعه وب استفاده میشود. یکی از جنبههای مهم برنامهنویسی مدیریت فایلها و دادههاست که پایتون چندین ابزار قدرتمند برای پیشبرد این کار تدارک دیده است. فرقی نمیکند برنامهنویسی مبتدی باشید یا توسعهدهندهای باتجربه، چراکه درک نحوه کار با فایلها و پوشهها در پایتون قاعدهای ضروری برای شماست. در این مقاله از آموزش برنامهنویسی، اصول مدیریت فایل در پایتون ازجمله نحوه خواندن و نوشتن فایلها، نحوه رسیدگی به خطاها، خواندن و نوشتن دادههای باینری و کار با دایرکتوریها و نحوه کار با فرمتهای مختلف فایل را بررسی خواهیم کرد.
مروری بر مدیریت فایل در پایتون
آگاهی از قواعد مدیریت فایل و پوشه اصلی ضروری در هر زبان برنامهنویسی است. در پایتون، ماژولهای مختلفی ازجمله ماژولهای OS و shutil داخلی (Built-in) را برای مدیریت فایلها دردسترس داریم. این ماژولها متدهایی مفید برای کار با فهرستها و فایلها و مسیرهای فایل را ارائه میدهند.
برای آشنایی با پایتون مقاله زیر را مطالعه کنید.
آموزش عملیات پایه فایل در پایتون
اولین قدم در آموزش مدیریت فایل در پایتون توضیح اصول کار با فایلهاست؛ یعنی باید با انواع عملیات فایل (File Operations) مانند خواندن و نوشتن و الحاق دادهها به فایلها آشنا باشید. پایتون چندین تابع داخلی برای خواندن و نوشتن فایلهای متنی ازجمله open() و read() و write() ارائه میدهد.
تابع ()open برای بازکردن فایل و برگرداندن آن بهصورت شیء (Object) استفاده میشود. بعد از بازکردن فایل با این تابع، میتوان از آن برای خواندن یا نوشتن یا اضافهکردن دادهها به فایل استفاده کرد. این تابع دو پارامتر (آرگومان) دارد: نام فایل و حالت (Mode) که فایل در آن باز میشود. حالت یا مود تعیینکننده است که آیا فایل باید برای خواندن و نوشتن یا هر دو باز شود یا خیر. حالتهای مختلف عبارتاند از:
- ‘r’: حالت خواندن که فایل را فقط برای خواندن باز میکند.
- ‘w’: حالت نوشتن که فایل را فقط برای نوشتن باز میکند. اگر فایل ازقبل وجود داشته باشد، طول (length) آن صفر میشود. اگر فایل وجود نداشته باشد، فایلی جدید ایجاد خواهد شد.
- ‘a’: حالت افزودن که فایل را فقط برای نوشتن باز میکند. اگر فایل وجود داشته باشد، دادهها به آن اضافه میشوند. اگر فایل وجود نداشته باشد، فایلی جدید ایجاد خواهد شد.
- ‘x’: حالت ایجاد انحصاری که فایل را فقط برای نوشتن باز میکند. اگر فایل وجود نداشته باشد، فایلی جدید ایجاد خواهد شد. اگر فایل ازقبل وجود داشته باشد، خطا خواهد داد.
رایجترین نوع فایلی که در پایتون با آن سروکار دارید، فایل متنی حاوی متن ساده است. در اینجا، مثالی از نحوه خواندن و نوشتن فایل متنی در پایتون آورده شده است:
# Open a file for reading file = open('example.txt', 'r') # Read the contents of the file content = file.read() # Close the file file.close() # Open a file for writing file = open('example.txt', 'w') # Write some text to the file file.write('Hello, world!') # Close the file file.close()
در این مثال، ابتدا فایلی به نام example.txt را برای خواندن با استفاده از تابع ()open با مود ‘r’ باز میکنیم. سپس، از تابع read() برای خواندن کل محتویات فایل استفاده و درنهایت در متغیر رشتهای (string) به نام Content را ذخیره خواهیم کرد. پس از اتمام خواندن فایل، آن را با استفاده از متد ()close میبندیم.
درادامه، همان فایل را برای نوشتن با استفاده از تابع ()open با حالت ‘w’ باز میکنیم. درادامه، تابع ()write را برای نوشتن رشته “Hello, world!” بهکار میگیریم و در آخر، با متد ()close فایل را دوباره میبندیم.
برای آشنایی با هاست پایتون مقاله زیر را بخوانید.
توجه به این نکته ضروری است که وقتی فایلی را برای نوشتن با استفاده از مود ‘w’ باز میکنید، محتوای فایل اگر قبلاً وجود داشته باشد، پایتون آن را بازنویسی (Overwrite) میکند. اگر میخواهید بهجای بازنویسی فایل به آن داده بیفزایید، بهتر است آن را با استفاده از مود ‘a’ باز کنید.
آموزش عملیات پیشرفته فایل
بعد از آموزش اصول اولیه عملیات فایل (File Operations)، گام بعدی آشنایی با عملیات فایل پیشرفتهتر است. عملیات فایل پیشرفته شامل رسیدگی به خطاها، کار با فرمتهای مختلف فایل، خواندن و نوشتن دادههای باینری و کار با دایرکتوریها میشود.
۱. رسیدگی به خطاها در پایتون
برای کار با فایلها در پایتون، باید آماده رخدادن خطاها باشید و بدانید که چطور آنها را رفعورجوع کنید. بهعنوان مثال، اگر بخواهید فایلی باز کنید که وجود ندارد، پایتون خطا میدهد. برای رسیدگی به این خطا و نمایش پیام خطای معنیدار به کاربر، از دستورهای try و except استفاده میکنیم. دستور try برای اجرای کدی استفاده میشود که ممکن است خطایی ایجاد کند و دستور except برای رسیدگی به خطا بهکار میآید.
در اینجا مثالی از استفاده دستورهای try و except برای رسیدگی به خطاها (هنگام بازکردن فایل) مشاهده میکنید:
try: file = open('example.txt', 'r') content = file.read() file.close() except FileNotFoundError: print('The file does not exist.')
در این مثال، از بلوک try/except برای رسیدگی به خطای FileNotFoundError استفاده کردیم که ممکن است درصورت نبودِ فایل، example.txt رخ دهد. اگر خطا رخ داد، پیامی را برای کاربر چاپ میکنیم که نشان میدهد فایل وجود ندارد.
برای آشنایی با نحوه نوشتن Doctest در پایتون مقاله زیر را بخوانید.
۲. کار با فرمتهای مختلف فایل
کار با فرمتهای مختلف فایل در پایتون شامل استفاده از کتابخانههای مناسب برای خواندن و نوشتن و دستکاری دادهها در قالب دلخواه است. در اینجا چند فرمت فایل رایج و کتابخانههای مرتبط با آنها در پایتون را معرفی میکنیم:
- CSV: فرمت CSV یا Comma Separated Values فرمتی ساده و پرکاربرد برای ذخیرهسازی دادهها بهصورت جدولی است. برای کار با فایلهای CSV در پایتون، از ماژول داخلی ‘csv’ استفاده کنید که روشهایی را برای خواندن و نوشتن فایلهای CSV ارائه میکند. همچنین، از تابع ()csv.reader برای خواندن فایل CSV و از تابع ()csv.writer برای نوشتن در فایل CSV میتوانید کمک بگیرید.
- JSON: فرمت JSON یا JavaScript Object Notation فرمت داده کمحجمی است که خواندن و نوشتن آن برای توسعهدهنده و تجزیه و تولید آن برای ماشینها ساده است. برای کار با فایلهای JSON در پایتون، میتوانید از ماژول داخلی ‘json’ استفاده کنید که روشهایی را برای رمزگذاری و رمزگشایی دادههای JSON ارائه میدهد. استفاده از تابع json.load() برای خواندن فایل JSON و تابع json.dump() برای نوشتن در فایل JSON توصیه میشود.
- XML: فرمت XML یا Extensible Markup Language یکی از زبانهای نشانهگذاری است که برای ذخیره و تبادل دادهها بهکار گرفته میشود. برای کار با فایلهای XML در پایتون، ماژول ‘xml.etree.ElementTree’ کارایی دارد که یک API برای کار با دادههای XML ارائه میدهد. همچنین، مسئولیت خواندن فایل XML با تابع ()ElementTree.parse و مسئولیت نوشتن در فایل XML با تابع ()ElementTree.Element.write خواهد بود.
- Excel: اکسل برنامهای مشهور برای ذخیره و مدیریت دادههاست. برای کار با فایلهای اکسل در پایتون، به ماژول ‘openpyxl’ نیاز دارید که روشهایی برای خواندن و نوشتن فایلهای اکسل ارائه میدهد. از تابع ()openpyxl.load_workbook برای خواندن فایل اکسل و از تابع ()openpyxl.Workbook.save برای نوشتن در فایل اکسل میتوانید استفاده کنید.
- PDF: فرمت PDF یا Portable Document Format فرمتی است که برای ارائه و تبادل اسناد بهطور ایمن و مستقل از نرمافزار یا سختافزار یا سیستمعامل استفاده میشود. برای کار با فایلهای PDF در پایتون، میتوانید از ماژول ‘PyPDF2’ استفاده کنید که روشهایی برای خواندن و نوشتن فایلهای PDF را دارد. طبق روال قبل، از تابع PdfFileReader() برای خواندن فایل PDF و از تابع ()PdfFileWriter برای نوشتن روی فایل PDF کمک بگیرید.
درادامه، مثالی از استفاده از ماژول ‘csv’ برای کار با فایل CSV آوردهایم:
import csv # Read data from a CSV file with open("data.csv", "r") as file: reader = csv.reader(file) for row in reader: print(row) # Write data to a CSV file with open("output.csv", "w", newline="") as file: writer = csv.writer(file) writer.writerow(["Name", "Age", "City"]) writer.writerow(["John Doe", 30, "New York"]) writer.writerow(["Jane Doe", 25, "Chicago"])
در کد بالا، تابع ()csv.reader برای خواندن دادهها از فایل CSV به نام data.csv استفاده و بهکمک حلقهای، هر ردیف فایل را در کنسول چاپ خواهد کرد. درادامه، از تابع ()csv.writer برای نوشتن دادهها در فایل CSV جدیدی به نام output.csv استفاده میشود تا یک ردیف هدر برای نام ستونها ایجاد شود.
۳. خواندن و نوشتن دادههای باینری
برای خواندن و نوشتن دادههای باینری در فایل، پایتون حالتهای rb و wb را فراهم کرده است. حالت rb برای خواندن دادههای باینری و حالت wb برای نوشتن دادههای باینری کارایی دارند. در اینجا، نمونهای برای استفاده از حالتهای rb و wb بهمنظور خواندن و نوشتن دادههای باینری آورده شده است:
with open("example.bin", "wb") as file: file.write(b"\x00\x01\x02\x03\x04\x05\x06\x07") with open("example.bin", "rb") as file: data = file.read()
۴. کار با دایرکتوریها در پایتون
برای کار با دایرکتوریها، پایتون ماژول ‘os’ را به شما ارائه میدهد. ماژول ‘os’ راهکارهایی برای ایجاد و حذف و فهرست کردن دایرکتوریها (پوشهها) دراختیار دارد. درادامه، مثالی از استفاده از ماژول ‘os’ برای ایجاد دایرکتوری آوردایم:
import os os.mkdir("example")
۵. مدیریت دایرکتوریها در پایتون
وقتی تعداد فایلها زیاد باشد، اهمیت مدیریت آنها بیشتر میشود. درادامه، متدهای کاربردی برای مدیریت دایرکتوریها را بهاختصار معرفی میکنیم:
- دریافت پوشه کنونی، یعنی پوشهای که درحالحاضر کار میکند، با متد ()getcwd انجام میشود. نتیجه استفاده از این متد، بهصورت یک رشته خواهد بود.
- اگر میخواهید فهرستی از دایرکتوریها و فایلها داشته باشید، باید از متد ()listdir استفاده کنید. برای استفاده از این متد نیاز است که مسیر را تعیین کنید؛ چراکه درصورت نامعلومبودن مسیر، پوشه در حال کار بهطورخودکار انتخاب میشود.
- با کمک متدها، امکان تغییر نام پوشه نیز فراهم شده است. متد ()rename مسئول این کار است و دو پارامتر میپذیرد. نام قدیمی را در اولین پارامتر و نام جدید را در پارامتر دوم قرار دهید.
- برای حرف فایل یا دایرکتوری (پوشه) در پایتون، باید دو متد را بشناسید: متد ()remove برای حذف فایل و متد ()rmdir برای حذف پوشه کارایی دارد.
اگر با تعداد زیادی فایل و پوشه در پایتون سروکار دارید، مدیریت فایلها نظیر حذف و تغییر نام و دریافت به ساماندهی بهتر فایلها و پوشهها کمک میکند.
برای آشنایی با کاربردها، مزیتها و راهنمای کامل نصب و راهاندازی پایتون برای مبتدیان مقاله زیر را بخوانید.
جمعبندی
آموزش مدیریت فایل در پایتون بخشی ضروری از برنامهنویسی است. پس از آشنایی با عملیات فایل اولیه و پیشرفته، قدمی اساسی برای مدیریت فایلها برمیدارید و میتوانید برنامههایی پیچیدهتر بنویسید. مدیریت فایل و آشنایی دقیق با آن زمانی به دادتان میرسد که برای ساماندهی تعداد زیادی فایل سرگردان شدهاید. برای مثال، ماژول ‘os’ اولین و مهمترین متد کارآمدی است که پوشهها و فایلها را ساماندهی میکند. در این مقاله از آموزش پایتون، اصول اولیه عملیات فایل در پایتون ازجمله خواندن و نوشتن و الحاق دادهها به فایلها را بررسی کردیم. همچنین، به عملیات فایل پیشرفته مانند رسیدگی به خطاها، نحوه کار با فرمتهای مختلف فایل، خواندن و نوشتن دادههای باینری و کار با دایرکتوریها نگاهی انداختیم.
سؤالات متداول
۱. منظور از فایل در برنامهنویسی پایتون چیست؟
ذخیرهسازی اطلاعات در بلندمدت داخل فایلها انجام میشود.
۲. برای ساخت پوشه یا دایرکتوری جدید از چه متدی استفاده کنیم؟
برای این کار باید از متد ()mkdir استفاده کنیم.
۳. اولین گام برای انجام عملیات روی فایلها چیست؟
بازکردن فایل با تابع ()open اولین گام برای انجام عملیات روی فایلهاست.