File dan Data · Pelajaran 4 dari 8
Bekerja dengan file dan folder
9 menit baca · BelajarCode
Modul pathlib adalah cara modern untuk bekerja dengan file dan folder di Python. Contoh di pelajaran ini membuat folder latihan sendiri, jadi aman dijalankan di Playground.
1from pathlib import Path23folder = Path("latihan_laporan")4folder.mkdir(exist_ok=True)56for bulan in ["januari", "februari", "maret"]:7 berkas = folder / f"laporan {bulan} 2026.txt"8 berkas.write_text(f"Laporan penjualan bulan {bulan}\n", encoding="utf-8")910for berkas in sorted(folder.iterdir()):11 print(berkas.name, "|", berkas.stat().st_size, "byte")laporan februari 2026.txt | 33 byte laporan januari 2026.txt | 32 byte laporan maret 2026.txt | 30 byte
Path("latihan_laporan")mewakili sebuah jalur folder.folder / "nama.txt"menyusun jalur dengan aman di Windows, macOS, maupun Linux.mkdir(exist_ok=True)membuat folder, tanpa error jika sudah ada.write_textdanread_textmenulis dan membaca isi file teks.
Mengganti nama file secara massal
1from pathlib import Path23folder = Path("latihan_foto")4folder.mkdir(exist_ok=True)5for nama in ["IMG_2031.JPG", "IMG_2032.jpg", "foto produk.PNG", "catatan.txt"]:6 (folder / nama).write_text("isi contoh", encoding="utf-8")78gambar = sorted(p for p in folder.iterdir() if p.suffix.lower() in (".jpg", ".png"))9for nomor, berkas in enumerate(gambar, start=1):10 baru = folder / f"produk-{nomor:02d}{berkas.suffix.lower()}"11 print(f"{berkas.name:<16} -> {baru.name}")12 berkas.rename(baru)1314print(sorted(p.name for p in folder.iterdir()))IMG_2031.JPG -> produk-01.jpg IMG_2032.jpg -> produk-02.jpg foto produk.PNG -> produk-03.png ['catatan.txt', 'produk-01.jpg', 'produk-02.jpg', 'produk-03.png']
p.suffix adalah ekstensi file, misalnya .JPG. Ekstensi diubah ke huruf kecil supaya seragam. File catatan.txt tidak tersentuh karena bukan gambar.
Uji dulu tanpa mengubah apa pun
Saat memakai program seperti ini untuk file sungguhan, jalankan dulu dengan baris rename dijadikan komentar, supaya program hanya menampilkan rencana perubahan. Setelah yakin, baru jalankan versi yang benar-benar mengganti nama. Simpan juga cadangan folder aslinya.
Mencari file
1from pathlib import Path23akar = Path("latihan_arsip")4(akar / "2025").mkdir(parents=True, exist_ok=True)5(akar / "2026").mkdir(parents=True, exist_ok=True)6(akar / "2025" / "nota-001.csv").write_text("a", encoding="utf-8")7(akar / "2026" / "nota-014.csv").write_text("b", encoding="utf-8")8(akar / "2026" / "rapat.txt").write_text("c", encoding="utf-8")910for berkas in sorted(akar.rglob("*.csv")):11 print(berkas.relative_to(akar))2025/nota-001.csv 2026/nota-014.csv
rglob("*.csv") mencari semua file CSV di folder itu beserta seluruh subfoldernya.
File di Playground
Di Playground, file disimpan di memori sementara peramban dan hilang saat halaman Playground dimuat ulang. Di komputermu sendiri, program yang sama bekerja dengan file sungguhan, jadi berhati-hatilah dengan perintah yang mengubah atau menghapus file.
Cek pemahaman
Kenapa jalur file sebaiknya disusun dengan folder / "nama.txt" daripada menggabungkan teks "folder" + "/" + "nama.txt"?
Latihan
Kelompokkan file menurut ekstensi
Buat folder latihan berisi beberapa file dengan ekstensi berbeda (.pdf, .xlsx, .jpg). Pindahkan setiap file ke subfolder sesuai ekstensinya, misalnya pdf/, xlsx/, dan jpg/.
Pembahasan
1from pathlib import Path23folder = Path("latihan_unduhan")4folder.mkdir(exist_ok=True)5for nama in ["kontrak.pdf", "anggaran.xlsx", "struk.jpg", "proposal.pdf"]:6 (folder / nama).write_text("isi", encoding="utf-8")78for berkas in list(folder.iterdir()):9 if berkas.is_file():10 tujuan = folder / berkas.suffix.lstrip(".").lower()11 tujuan.mkdir(exist_ok=True)12 berkas.rename(tujuan / berkas.name)1314for berkas in sorted(folder.rglob("*")):15 if berkas.is_file():16 print(berkas.relative_to(folder))jpg/struk.jpg pdf/kontrak.pdf pdf/proposal.pdf xlsx/anggaran.xlsx
list(folder.iterdir()) mengambil daftar file lebih dulu, supaya proses memindahkan file tidak mengganggu perulangan.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.