- 1 1. Pendahuluan
- 2 2. Persiapan untuk Menyalin File dengan Python
- 3 3. Dasar Penggunaan Modul shutil
- 4 4. Cara Menyalin Seluruh Direktori
- 5 5. Teknik Mencegah Overwrite
- 6 6. Cara Memindahkan File dengan Python
- 7 7. Contoh Nyata Copy File dengan Python
- 8 8. Cara Menyalin Hanya Format File Tertentu
- 9 9. Error Handling dan Exception
- 10 10. Kesimpulan
1. Pendahuluan
Python menyediakan alat yang kuat untuk mempermudah manipulasi file. Salah satu tugas yang paling umum adalah menyalin file. Pada artikel ini, kita akan membahas cara menyalin file dan direktori secara efisien menggunakan modul standar Python shutil
. Disertai contoh kode nyata, kita juga akan membahas teknik untuk mencegah overwrite, penanganan error, serta metode lanjutan untuk copy file.
2. Persiapan untuk Menyalin File dengan Python
Import modul shutil
Modul shutil
adalah bagian dari pustaka standar Python, jadi tidak perlu instalasi tambahan. Cukup import dengan kode berikut:
import shutil
Dengan ini, Anda bisa melakukan operasi seperti menyalin, memindahkan, dan menghapus file. Jika dikombinasikan dengan modul os
, Anda juga dapat mengecek keberadaan file/direktori dan memperkuat error handling.
Keunggulan modul shutil
Modul shutil
memiliki sintaks yang sederhana dan mudah dipahami. Terutama jika perlu melakukan operasi massal pada file atau seluruh direktori, shutil
menjadi solusi yang sangat efektif.

3. Dasar Penggunaan Modul shutil
Cara menggunakan shutil.copy()
shutil.copy()
adalah fungsi dasar untuk menyalin file. Fungsi ini menyalin file asli ke lokasi baru yang ditentukan.
import shutil
# Menyalin file
shutil.copy('original.txt', 'copy.txt')
Jika file dengan nama yang sama sudah ada di tujuan, file tersebut akan ditimpa.
Cara menggunakan shutil.copy2()
shutil.copy2()
menyalin isi file sekaligus metadata-nya (tanggal dibuat, izin akses, dll).
import shutil
# Menyalin isi file beserta metadata
shutil.copy2('original.txt', 'copy_with_metadata.txt')
Fungsi ini berguna jika Anda ingin membuat salinan yang identik dengan file aslinya.
4. Cara Menyalin Seluruh Direktori
Menggunakan shutil.copytree()
shutil.copytree()
digunakan untuk menyalin seluruh direktori secara rekursif. Semua file dan sub-direktori dari folder asal akan disalin ke lokasi baru.
import shutil
# Menyalin direktori
shutil.copytree('source_directory', 'destination_directory')
Namun, jika direktori tujuan sudah ada, fungsi ini akan menghasilkan error. Oleh karena itu, perlu pengecekan sebelumnya.
Mengecualikan file atau folder saat menyalin
Untuk mengecualikan file atau folder tertentu, gunakan argumen ignore
dengan shutil.ignore_patterns()
.
import shutil
# Menyalin sambil mengabaikan file .log
shutil.copytree('source_directory', 'destination_directory', ignore=shutil.ignore_patterns('*.log'))
Kode ini akan menyalin seluruh isi direktori kecuali file dengan ekstensi .log
.
5. Teknik Mencegah Overwrite
Menggunakan os.path.exists()
Secara default, shutil.copy()
dan shutil.copy2()
akan menimpa file jika nama sama sudah ada. Untuk mencegah hal ini, lakukan pengecekan file terlebih dahulu.
import shutil
import os
# Mengecek file sebelum menyalin
if not os.path.exists('copy.txt'):
shutil.copy('original.txt', 'copy.txt')
else:
print('File sudah ada. Penyalinan dibatalkan.')
Menggunakan pathlib.Path.exists()
Dengan pathlib
, pengecekan keberadaan file bisa dilakukan dengan cara yang lebih intuitif.
from pathlib import Path
# Mengecek dengan Path object
dst = Path('copy.txt')
if not dst.exists():
shutil.copy('original.txt', dst)
else:
print('File sudah ada. Penyalinan dibatalkan.')
6. Cara Memindahkan File dengan Python
Menggunakan shutil.move()
shutil.move()
digunakan untuk memindahkan file atau direktori ke lokasi baru.
import shutil
# Memindahkan file
shutil.move('original.txt', 'new_folder/original.txt')
Jika folder tujuan belum ada, akan muncul FileNotFoundError
. Maka, Anda perlu membuat folder terlebih dahulu.
import shutil
import os
# Membuat folder jika belum ada
if not os.path.exists('new_folder'):
os.makedirs('new_folder')
# Memindahkan file
shutil.move('original.txt', 'new_folder/original.txt')

7. Contoh Nyata Copy File dengan Python
Menyalin satu file
import shutil
# Menyalin file
shutil.copy('data.txt', 'backup/data_backup.txt')
Menyalin seluruh direktori
import shutil
# Menyalin direktori
shutil.copytree('project_files', 'project_backup')
Menyalin tanpa overwrite
import shutil
import os
# Hanya menyalin jika file belum ada
if not os.path.exists('backup/report.txt'):
shutil.copy('report.txt', 'backup/report.txt')
else:
print('File sudah ada. Penyalinan dihentikan.')
8. Cara Menyalin Hanya Format File Tertentu
Dengan modul glob
, Anda bisa memilih format file tertentu (misalnya .txt
atau .csv
) untuk disalin.
import shutil
import glob
# Menyalin semua file .txt
for file in glob.glob('data/*.txt'):
shutil.copy(file, 'backup/')
Kode ini akan menyalin semua file .txt
dari folder data
ke folder backup
.
9. Error Handling dan Exception
Menangani error saat operasi file sangat penting. Misalnya file tidak ditemukan atau ada masalah izin akses.
Menambahkan exception handling
import shutil
try:
shutil.copy('non_existent_file.txt', 'backup/')
except FileNotFoundError as e:
print(f'File tidak ditemukan: {e}')
except PermissionError as e:
print(f'Error izin akses: {e}')
except Exception as e:
print(f'Error tak terduga: {e}')
Kode ini akan menangkap error tertentu dan menanganinya sesuai kasus.
10. Kesimpulan
Dengan modul shutil
, menyalin file dan direktori di Python menjadi lebih mudah. Ditambah dengan teknik mencegah overwrite, menyalin format file tertentu, serta menambahkan error handling, Anda bisa melakukan manipulasi file dengan lebih aman dan efisien. Gunakan panduan ini untuk mengoptimalkan workflow Anda dengan Python.