تور آموزشی

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

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

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

مدیریت فایل در پایتون سه مرحله دارد.

  1. بازکردن فایل.
  2. پردازش فایل (خواندن محتوای فایل، نوشتن در فایل و ...)
  3. بستن فایل.

باز کردن فایل

دستور اصلی برای کار کردن با فایل‌ها در زبان پایتون تابع open هست. تابع open دو پارامتر اصلی دارد. پارامتر اول نام فایل و پارامتر دوم مد بازکردن فایل (mode) است.

چهار مد اصلی برای باز کردن یک فایل در پایتون وجود دارد.

مد r: برای خواندن (read) از یک فایل استفاده می‌شود. در صورتی که فایل موجود نباشد خطا بازمی‌گرداند. این مد پیش‌فرض پایتون است.

مد w: برای نوشتن (write) در یک فایل استفاده می‌شود. در صورتی که فایل موجود نباشد آن را می‌سازد و در صورتی که فایل موجود باشد تمام مطالب را پاک می‌کند و از ابتدا شروع به نوشتن می‌کند.

مد a: برای افزودن به انتهای (append) یک فایل استفاده می‌شود. در صورتی که فایل موجود نباشد آن را می‌سازد و در صورتی که فایل موجود باشد از انتهای فایل شروع به نوشتن می‌کند.

مد x: برای ایجاد کردن (create) یک فایل استفاده می‌شود. در صورتی که فایل موجود باشد خطا بازمی‌گرداند.

مثال:

f = open(“my_file.txt”)

دستور بالا معادل با کد زیر است:

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

کنار چهار مد ذکر شده می‌توان از پسوند t برای فایل‌های متنی و از پسوند b برای فایل‌های باینری (مانند عکس‌ها) استفاده کرد. بنابراین مثال بالا به شکل زیر می‌توان بازنویسی کرد.

f = open(“my_file.txt”, “rt”)

باید دقت شود در مثال‌های بالا اگر فایلی با نام my_file.txt وجود نداشته باشد با خطا روبرو خواهیم شد.

FileNotFoundError: No such file or directory: 'my_file.txt'

همچنین اگر این فایل در مسیر پایتون نباشد باید آدرس کامل فایل را بدهیم. مثلا اگر فایل رو دسکتاپ کامپیوتر باشد باید آدرس دسکتاپ را بدهیم

مثال:

f = open("C:/Users/Username/Desktop/my_file.txt")

پردازش فایل

در چند مثال پایین فرض می‌کنیم یک فایل متنی به نام my_file.txt و با محتوای زیر وجود داشته باشد.

Python is the best
language.
:-)

با متد read  می‌توانیم محتوای داخل فایل را بخوانیم و آن را چاپ کنیم.

مثال:

f = open(“my_file.txt”)
print(f.read())

خروجی:

Python is the best
language.
:-)

در متد read می‌توانیم تعیین کنیم که چند کاراکتر از فایل خوانده شود.

مثال:

f = open(“my_file.txt”)
print(f.read(3))

خروجی:

Pyt

متد readline یک خط کامل را برمی‌گرداند.

مثال:

f = open(“my_file.txt”)
print(f.readline())

خروجی:

Python is the best

در صورتی که متد readline را دوبار فراخوانی کنیم، دو خط اول فایل چاپ خواهد شد. همچنین می‌توانیم از حلقه‌های تکرار برای پیمایش محتوای فایل به صورت خط به خط استفاده کنیم.

مثال:

f = open(“my_file.txt”)
for line in f:
    print(line)

خروجی:

Python is the best
language.
:-)

در هر بار پیمایش حلقه یک خط چاپ می‌شود.

به سادگی می‌توانیم تعداد کاراکترهای هر خط را مشاهده کنیم.

در مثال قبل:

for line in f:
    print(len(line))

خروجی:

19
10
3

دقت شود انتهای خط اول و دوم کاراکتر خط جدید (new line) وجود دارد. به همین دلیل تعداد کاراکترها یکی بیشتر از چیزی است که دیده می‌شود.

بستن فایل

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

مثال:

f.close()

برای نوشتن محتوا در فایل از متد write استفاده می‌کنیم.

مثال:

f = open(“new_file.txt”, “w”)
f.write(“Salam\nPython :-)”)
f.close()
f = open(“new_file.txt”, “r”)
print(f.read())

خروجی:

Salam
Python :-)

در صورتی که فایل در مد a باز شده باشد متد write محتوا را به انتهای فایل اضافه می‌کند.

دستور with

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

مثال:

with open('new_file.txt', 'r') as f:
content = f.read()
print(content)

خروجی:

Salam
Python :-)

در این مثال، ما از دستور with برای باز کردن فایل new_file.txt که در مثال قبل ساخته بودیم با مد خواندن (r) استفاده کرده‌ایم. سپس محتویات فایل با استفاده از متد read خوانده شده و در متغیر content ذخیره شده است. در نهایت، فایل به صورت خودکار هنگام خروج از بلوک with بسته می‌شود، حتی اگر خطایی رخ دهد.

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

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

برای پاک کردن فایل در پایتون باید از تابع remove در ماژول os استفاده کنیم.

مثال:

import os
os.remove(“new_file.txt”)
f = open(“new_file.txt”)

خروجی:

FileNotFoundError: No such file or directory

در صورتی که بخواهیم فایلی را که موجود نیست حذف کنیم با خطا روبرو می‌شویم. برای اینکه دچار چنین خطاهایی نشویم بهتر است ابتدا از موجود بودن فایل مطمئن شویم.

مثال:

import os
if os.path.exists("new_file.txt"):
    os.remove("new_file.txt")
else:
    print("The file does not exist")

خروجی:

The file does not exist

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

برای کار کردن با فایل‌های باینری باید به مد بازکردن فایل دقت کنیم که حتما از پسوند b استفاده کنیم. علاوه بر این باید به نوع داده‌ای که در فایل قرار می‌گیرد نیز باید دقت کنیم.

مثال:

with open(“new_binary_file.bin”, “wb”) as f:
    data = bytes([0x48, 0x65, 0x6c, 0x6c, 0x6f])
    f.write(data)
with open(“new_binary_file.bin”, “rb”) as f:
    print(f.read())

خروجی:

b'Hello'

در مثال بالا برای ساختن یک شیء از نوع بایت کاراکترهای اسکی (ASCII) رشته Hello را به تابع bytes داده‌ایم.