Cara Menampilkan Semua File di Direktori dengan Python
Kalau kamu sering main-main dengan file system di Python, salah satu tugas yang sering muncul adalah menampilkan semua file dalam sebuah direktori. Ini berguna buat banyak hal, mulai dari manajemen file, pemrosesan data, sampai sekadar eksplorasi isi folder. Di sini, kita akan bahas beberapa cara untuk melakukannya, lengkap dengan contoh dan tips praktis.
1. Menggunakan os.listdir()
Modul os memberikan cara sederhana untuk menampilkan semua entri dalam direktori. Fungsi os.listdir() mengembalikan semua isi direktori, termasuk file dan subdirektori. Untuk mengambil hanya file, kita bisa tambahkan filter.
import os
def list_files(directory):
try:
entries = os.listdir(directory)
files = [f for f in entries if os.path.isfile(os.path.join(directory, f))]
return files
except FileNotFoundError:
print(f"Direktori '{directory}' tidak ditemukan.")
return []
# Contoh penggunaan
directory_path = '/path/to/directory'
print(list_files(directory_path))Di sini, os.path.isfile() memastikan kita hanya mengambil file.
2. Menggunakan os.scandir()
Mulai Python 3.5, os.scandir() hadir sebagai cara yang lebih efisien untuk iterasi direktori. Ia mengembalikan iterator dari DirEntry yang sudah punya info tipe file.
import os
def list_files(directory):
try:
with os.scandir(directory) as entries:
files = [entry.name for entry in entries if entry.is_file()]
return files
except FileNotFoundError:
print(f"Direktori '{directory}' tidak ditemukan.")
return []
directory_path = '/path/to/directory'
print(list_files(directory_path))Lebih efisien dibanding os.listdir(), apalagi kalau direktori besar.
3. Menggunakan pathlib.Path
pathlib (Python 3.4+) menawarkan pendekatan object-oriented. Path punya metode untuk iterasi direktori dan pengecekan file.
from pathlib import Path
def list_files(directory):
try:
path = Path(directory)
files = [f.name for f in path.iterdir() if f.is_file()]
return files
except FileNotFoundError:
print(f"Direktori '{directory}' tidak ditemukan.")
return []
directory_path = '/path/to/directory'
print(list_files(directory_path))Dengan Path.iterdir(), kode jadi lebih rapi dan modern.
4. Praktik Terbaik
- Tangani Exception: Selalu siap-siap menghadapi
FileNotFoundErrorsupaya program nggak crash. - Filter Berdasarkan Tipe File: Kalau cuma butuh file tertentu, pakai filter ekstensi atau modul
glob. - Performa: Untuk direktori besar,
os.scandir()ataupathlib.Pathlebih cepat dibandingos.listdir().
Kesimpulan
Menampilkan semua file dalam direktori adalah tugas yang sering muncul dan bisa dilakukan dengan berbagai cara di Python. Mulai dari sederhana dengan os.listdir(), efisien dengan os.scandir(), sampai modern dan rapi dengan pathlib. Pilih metode yang paling cocok sesuai kebutuhanmu, dan kamu bisa mengelola file dengan lebih mudah dan efektif.