Python memiliki beberapa modul bawaan yang memungkinkan Anda menghapus file dan direktori.

Tutorial ini menjelaskan cara menghapus file dan direktori menggunakan fungsi dari modul os, pathlib, dan shutil.

Menghapus File

Dalam Python Anda dapat menggunakan os.remove()os.unlink()pathlib.Path.unlink() untuk menghapus file.

Modul os menyediakan cara portabel untuk berinteraksi dengan sistem operasi. Modul ini tersedia untuk Python 2 dan 3.

Untuk menghapus satu file dengan os.remove(), berikan path ke file sebagai argumen:

import os

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

fungsi os.remove() dan os.unlink() memiliki fungsi yang sama dan dapat saling menggantikan :

import os

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

Jika file yang ditentukan tidak ada akan muncul output FileNotFoundError . Baik os.remove() dan os.unlink() hanya dapat menghapus file, bukan direktori. Jika jalur yang diberikan menunjuk ke direktori, mereka akan mengeluarkan output error IsADirectoryError.

Menghapus file memerlukan izin write dan execute direktori yang berisi file tersebut. Jika tidak, Anda akan mendapatkan error PermissionError .

Untuk menghindari kesalahan saat menghapus file, Anda dapat menggunakan penanganan pengecualian untuk menangkap pengecualian dan mengirim pesan kesalahan yang tepat:

import os

file_path = '/tmp/file.txt'

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

Modul pathlib tersedia dalam Python 3.4 dan lebih tinggi. Jika Anda ingin menggunakan modul ini dalam Python 2 Anda dapat menginstalnya dengan pip. pathlib menyediakan antarmuka berorientasi objek untuk bekerja dengan jalur sistem file untuk berbagai sistem operasi.

Untuk menghapus file dengan modul thepathlib, buat objek Path yang menunjuk ke file dan panggil metode unlink() pada objek:

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))

athlib.Path.unlink()os.remove(), dan os.unlink() juga dapat digunakan untuk menghapus symlink.

Pencocokan pola

Anda dapat menggunakan modul glob untuk mencocokkan banyak file berdasarkan suatu pola. Misalnya, untuk menghapus semua file .txt di direktori /tmp, Anda dapat menggunakan sesuatu seperti ini:

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))

Untuk secara rekursif menghapus semua file .txt di direktori /tmp dan semua subdirektori di bawahnya, gunakan operasi recursive=True fungsi glob() dan gunakan pola “**`

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))

Modul pathlib mencakup dua fungsi glob, glob() dan rglob() untuk mencocokkan file dalam direktori yang diberikan. glob() hanya mencari kecocokan dengan file di top level directory. rglob() mencocokan semua file di direktori dan semua subdirektori, secara rekursif. Kode contoh berikut menghapus semua file .txt di direktori /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))

Menghapus Direktori (Folder)

Dalam Python Anda dapat menggunakan os.rmdir() dan pathlib.Path.rmdir() untuk menghapus direktori kosong dan shutil.rmtree() untuk menghapus direktori yang tidak kosong.

Contoh berikut menunjukkan cara menghapus direktori kosong:

import os

dir_path = '/tmp/img'

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

Atau, Anda dapat menghapus direktori dengan modul 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))

Modul shutil memungkinkan Anda untuk melakukan sejumlah operasi tingkat tinggi pada file dan direktori.

Dengan fungsi shutil.rmtree() Anda dapat menghapus direktori yang diberikan termasuk isinya:

import shutil

dir_path = '/tmp/img'

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

Argumen yang diteruskan ke shutil.rmtree() tidak boleh berupa symbolic link ke direktori.

Kesimpulan

Python menyediakan beberapa modul untuk menangani file. Kami telah menunjukkan kepada Anda cara menggunakan os.remove()os.unlink()pathlib.Path.unlink() untuk menghapus satu file, os.rmdir() dan pathlib.Path.rmdir() untuk menghapus direktori yang kosong dan shutil.rmtree() untuk menghapus direktori secara rekursif dan semua isinya.

Berhati-hatilah saat menghapus file atau direktori, karena begitu file dihapus, file tidak dapat dipulihkan dengan mudah.