نحوه حذف فایل ها و دایرکتوری ها در پایتون

نحوه حذف فایل ها و دایرکتوری ها در پایتون

سعیده مهاجری
پایتون چند ماژول داخلی دارد که به شما امکان حذف فایل ها و دایرکتوری ها را می دهد. در این آموزش با ما همراه باشید تا شما عزیزان را با نحوه حذف فایل ها و دایرکتوری ها در پایتون با استفاده از توابع از ماژول های os ، pathlib و shutil آشنا کنیم.

حذف فایل ها :

در پایتون می توانید از () os.remove () ، os.unlink () ، pathlib.Path.unlink برای حذف یک فایل استفاده کنید. ماژول os راهی قابل انتقال برای تعامل با سیستم عامل را فراهم می کند. این ماژول برای هر دو پایتون ۲ و ۳ در دسترس است. برای حذف یک فایل با () os.remove  ، مسیر فایل را به عنوان آرگومان انتقال دهید:

import os

file_path = '/tmp/file.txt'
os.remove(file_path)

توابع () os.remove  و () os.unlink  از نظر معنایی یکسان هستند:

import os

file_path = '/tmp/file.txt'
os.unlink(file_path)

اگر فایل مشخص شده وجود نداشته باشد ، خطای FileNotFoundError ایجاد می شود. توابع () os.remove  و () os.unlink  فقط می توانند فایل ها را حذف کنند ، اما دایرکتوری ها را نمی توانند. اگر مسیر داده شده به یک دایرکتوری اشاره کند ، خطای IsADirectoryError را نشان  می دهد. حذف یک فایل نیاز به دستور write و execute در پوشه حاوی فایل دارد. در غیر این صورت ، با خطای PermissionError مواجه خواهید شد. برای جلوگیری از خطا هنگام حذف فایل ها ، می توانید از exception handling استفاده کنید تا exception را بگیرید و یک پیام خطای مناسب ارسال کنید:

import os file_path = '/tmp/file.txt'  try: os.remove(file_path) except OSError as e: print("Error: %s : %s" % (file_path, e.strerror))

ماژول pathlib در پایتون ۳٫۴ به بالا موجود است. اگر می خواهید از این ماژول در پایتون ۲ استفاده کنید می توانید آن را با pip نصب کنید. برای حذف فایل با ماژول thepathlib ، یک Path object ایجاد کنید که به فایل اشاره دارد و متد () unlink را روی object فراخوانی کنید:

from pathlib import Path

file_path = Path('/tmp/file.txt')

try:
    file_path.unlink()
except OSError as e:
    print("Error: %s : %s" % (file_path, e.strerror))

() pathlib.Path.unlink () ، os.remove و () os.unlink  نیز می توانند برای حذف symlink استفاده شوند.

تطبیق الگو :

می توانید از ماژول glob برای مطابقت با چندین فایل براساس یک الگو استفاده کنید. به عنوان مثال ، برای حذف همه فایل های .txt در دایرکتوری / tmp ، از دستور زیر استفاده کنید:

import os
import glob

files = glob.glob('/tmp/*.txt')

for f in files:
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

برای حذف مجدد همه فایل ها .txt در دایرکتوری / tmp و همه ساب دایرکتوری آن ، آرگومان recursive = True را به تابع () glob منتقل کرده و از الگوی “**” استفاده کنید:

import os
import glob

files = glob.glob('/tmp/**/*.txt', recursive=True)

for f in files:
    try:
        os.remove(f)
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

ماژول pathlib شامل دو تابع () glob و () rglob برای مطابقت با فایل ها در یک دایرکتوری مشخص است. () glob فقط با فایل ها در دایرکتوری سطح بالا مطابقت دارد. () rglob به صورت بازگشتی با تمام فایل های موجود در پوشه و همه ساب دایرکتوری مطابقت دارد. کد زیر تمام فایل های .txt را در دایرکتوری / tmp حذف می کند:

from pathlib import Path

for f in Path('/tmp').glob('*.txt'):
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

حذف Folder ها :

در پایتون می توانید از () os.rmdir و () pathlib.Path.rmdir برای حذف دایرکتوری فضای خالی و از () shutil.rmtree برای حذف دایرکتوری فضای پر استفاده کنید. مثال زیر نحوه حذف یک دایرکتوری فضای خالی را نشان می دهد:

import os

dir_path = '/tmp/img'

try:
    os.rmdir(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

همچنین می توانید دایرکتوری ها را با ماژول pathlib حذف کنید:

from pathlib import Path

dir_path = Path('/tmp/img')

try:
    dir_path.rmdir()
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

ماژول shutil به شما امکان می دهد تعدادی عملیات سطح بالا روی فایل ها و دایرکتوری ها انجام دهید. با تابع () shutil.rmtree می توانید یک دایرکتوری مشخص از جمله محتوای آن را حذف کنید:

import shutil

dir_path = '/tmp/img'

try:
    shutil.rmtree(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

آرگومان منتقل شده به () shutil.rmtree نمی تواند یک لینک سمبولیک به یک دایرکتوری باشد.

جمع بندی :

پایتون چندین ماژول برای مدیریت فایل ها فراهم می کند. ما به شما نشان دادیم که چگونه از () os.remove () ، os.unlink () ، pathlib.Path.unlink برای حذف یک فایل ، از () os.rmdir  و () pathlib.Path.rmdir برای حذف یک دایرکتوری فضای خالی و از () shutil.rmtree برای حذف یک دایرکتوری فضای پر استفاده کنید. هنگام حذف فایل ها یا دایرکتوری ها بسیار مراقب باشید ، زیرا پس از حذف فایل ، نمی توان به راحتی آن را بازیابی کرد.

امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊

برچسب ها: دستورات لینوکس