Muhammad Ikhsan

Membaca isi folder dan membuat list nama file menggunakan Python

19. May. 2018

Beberapa hari yang lalu, tepatnya sepekan belakangan ini saya sibuk pilih-pilih foto nikahan bareng istri untuk keperluan dicetak dan dialbumkan. FYI, saya baru aja nikah akhir April kemaren.

kumpulan esai berbagi ruang
GIF via GIPHY

Dari 1.172 foto yang kami dapat, si fotografer meminta kami memilih 240 foto untuk dicetak. Bukan pekerjaan gampang, makanya ngambil waktu semingguan lebih, bahkan sebelum ditinggal istri untuk keperluan kantornya, kami baru bisa memilih sampai 300 besar. Artinya tugas saya mengurangi 60 foto lagi dan ternyata bisa dalam sehari, meskipun cukup sulit memilih yang terbaik dari yang terbaik :)

Masalah selanjutnya adalah bagaimana saya membuat daftar 240 nama file foto terpilih itu untuk kami kirimkan ke si tukang cetak foto. Awalnya ada ide untuk di-screen-capture, tapi gak jadi karena pertimbangan efektifitas dan kerempongan si pencetak nantinya, karena ternyata Ubuntu tidak belum sebaik Jendela untuk GUI manajemen filenya. Apalagi 240 file ini tersebar di tiga folder berbeda, ada dokumentasi saat pengajian, akad, dan resepsi.

ALBUM/
  |- AKAD
  |- PENGAJIAN
  |- RESEPSI


Solusinya adalah dengan meng-automatisasi menggunakan script Python. Kenapa pake bahasa pemrograman Python? simple, biar kelihatan keren dan gak ketinggalan zaman aja sebagai sofwer enjiner milenial. Dengan keterbatasan jam terbang menggunakan Python yang bisa saya tutupi dengan pengalaman saya berinteraksi dengan stackoverflow — situs kesayangan para programer — akhirnya jadilah script untuk membaca isi folder dengan python berikut (script-listing-image-files.py) sekaligus menyimpan nama-nama filenya ke dalam file txt.

Script saya tempatkan di dalam folder ALBUM, sejajar dengan tiga folder yang berisi foto-foto terpilih tadi. Jadinya tree folder ALBUM saya jadi begini:

ALBUM/
  |- AKAD
  |- PENGAJIAN
  |- RESEPSI
  |- script-listing-image-files.py


Nantinya, list nama-nama file foto yang terpilih tersebut akan dikumpulkan dalam satu file txt yang nama filenya saya definisikan di dalam script tadi; selected-images.txt.

Secara logikal, cara kerja script tadi adalah membaca folder-folder apa saja yang ada di root direktori (dir ALBUM) kemudian setiap folder akan dibaca nama-nama file yang ada didalamnya. Pada proses pembacaan file ini saya tambahkan logic untuk memvalidasi sehingga nama file yang masuk ke dalam daftar nanti hanyalah file gambar, cara yang paling mudah adalah dengan memeriksa ekstensinya. Setelah semua nama file digabungkan dan di assign ke variabel string my_list, kemudian di tambahkan kedalam file txt yang sudah di-define sebelumnya.

Selanjutnya tinggal menjalankan script yang sudah jadi dengan perintah python script-listing-image-files.py.

Karena saya menulis scriptnya menggunakan Python 3, maka sewaktu saya mengeksekusi script tadi muncul error

Traceback (most recent call last):
  File "getFileList.py", line 3, in <module>
    dirList = os.listdir()
TypeError: listdir() takes exactly 1 argument (0 given)


Jika error di atas muncul, maka ulangi eksekusi scriptnya dengan Python versi 3, python3 script-listing-image-files.py.

Begitulah, problem pertama rumah tangga kami berhasil kami selesaikan dengan beberapa baris script Python. :)

tags: pemrograman python scripting tutorial