Langsung ke konten

Membaca File di Python dengan open()

open() membuka file agar isinya bisa dibaca di Python. Artikel ini membahas mode file, read, readline, readlines, dan cara menangani file tidak ditemukan.

Belajar Python Level Basic
Belajar Python Level Basic
Advertisement

Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah membahas Membangkitkan Exception. Sekarang kita simpan dan ambil data dari luar program.

Selama ini data yang kita olah hanya hidup di memori. Begitu program ditutup, semuanya hilang. File memberi program ingatan yang bertahan, dan langkah pertamanya adalah membaca.

Membuka File dengan open()

Function open() membuka file dan mengembalikan objek file yang bisa dipakai untuk membaca atau menulis:

file = open("catatan.txt", "r")
isi = file.read()
print(isi)
file.close()

Baris open("catatan.txt", "r") berarti buka file bernama catatan.txt dalam mode baca. Setelah selesai, file harus ditutup dengan close().

Parameter pertama adalah nama atau path file. Kalau file berada di folder yang sama dengan skrip, cukup tulis namanya. Kalau di folder lain, sertakan pathnya:

file = open("data/catatan.txt", "r")

Mode File

Parameter kedua menentukan cara file dibuka. Beberapa mode yang paling sering dipakai:

ModeArti
"r"Baca saja, error kalau file tidak ada
"w"Tulis, menimpa isi lama
"a"Tambah di akhir file
"r+"Baca dan tulis
"rb"Baca dalam mode biner

Kalau mode tidak ditulis, Python memakai "r" sebagai default. Di artikel ini kita fokus pada mode baca.

read()

read() membaca seluruh isi file sekaligus dan mengembalikannya sebagai satu string:

file = open("catatan.txt", "r")
isi = file.read()
file.close()

print(isi)

Kalau file berisi:

Baris pertama
Baris kedua
Baris ketiga

Outputnya persis seperti itu, termasuk karakter baris baru di antara baris.

read() juga bisa menerima jumlah karakter. read(5) hanya mengambil lima karakter pertama. Ini berguna untuk file besar yang tidak ingin dimuat seluruhnya.

readline()

readline() membaca satu baris per pemanggilan:

file = open("catatan.txt", "r")

print(file.readline())   # Baris pertama
print(file.readline())   # Baris kedua
print(file.readline())   # Baris ketiga

file.close()

Setiap pemanggilan mengembalikan baris berikutnya, lengkap dengan \n di akhirnya. Untuk membersihkan karakter baris baru, gunakan strip():

baris = file.readline().strip()
print(baris)

readlines()

readlines() membaca semua baris dan mengembalikannya sebagai list:

file = open("catatan.txt", "r")
baris = file.readlines()
file.close()

print(baris)
# ['Baris pertama\n', 'Baris kedua\n', 'Baris ketiga\n']

Karena hasilnya list, kamu bisa mengolahnya dengan for:

for baris in baris:
    print(baris.strip())

Cara yang paling hemat memori untuk file besar adalah mengiterasi objek file langsung, karena isinya dibaca per baris:

file = open("catatan.txt", "r")

for baris in file:
    print(baris.strip())

file.close()

Menangani File Tidak Ditemukan

Kalau file yang diminta tidak ada, Python membangkitkan FileNotFoundError. Inilah tempat ilmu error handling dari artikel sebelumnya berguna:

try:
    file = open("data_hilang.txt", "r")
    isi = file.read()
    file.close()
    print(isi)
except FileNotFoundError:
    print("File tidak ditemukan, periksa kembali namanya")

Program tidak berhenti dan pengguna mendapat penjelasan yang jelas.

Cara lain adalah memeriksa dulu dengan os.path.exists():

import os

if os.path.exists("catatan.txt"):
    file = open("catatan.txt", "r")
    print(file.read())
    file.close()
else:
    print("File tidak ada")

Pendekatan try dan except umumnya lebih disukai karena menangani kasus secara langsung, termasuk saat file ada tapi tidak bisa dibaca.

Encoding dan Karakter

Secara default, Python memakai encoding sistem. Untuk teks berbahasa Indonesia yang berisi karakter khusus, menentukan encoding secara eksplisit membuat hasil lebih konsisten di semua komputer:

file = open("catatan.txt", "r", encoding="utf-8")
isi = file.read()
file.close()

print(isi)

encoding="utf-8" adalah pilihan yang aman untuk hampir semua kebutuhan.

Contoh Program: Menghitung Baris dan Kata

Mari baca sebuah file lalu hitung jumlah baris dan katanya:

# hitung_file.py

try:
    file = open("catatan.txt", "r", encoding="utf-8")
    baris = file.readlines()
    file.close()
except FileNotFoundError:
    print("File catatan.txt tidak ditemukan")
else:
    jumlah_baris = len(baris)
    jumlah_kata = sum(len(b.split()) for b in baris)

    print(f"Jumlah baris: {jumlah_baris}")
    print(f"Jumlah kata: {jumlah_kata}")

Dengan file berisi tiga baris di atas, hasilnya:

Jumlah baris: 3
Jumlah kata: 6

Program ini menggabungkan pembacaan file, penanganan error, dan pengolahan data dalam satu alur.

Kesalahan Umum Pemula

  • Lupa menutup file — sumber daya tetap terpakai; nantinya with menyelesaikan ini.
  • Salah menulis nama file — memicu FileNotFoundError; periksa huruf besar-kecil dan pathnya.
  • Mengira readline() membaca semua baris — ia hanya mengambil satu baris per pemanggilan.
  • Lupa strip() — karakter \n ikut terbawa ke hasil pengolahan.
  • Membuka file mode "r" padahal belum ada — mode "r" tidak membuat file baru, ia error.

Ringkasan

  • open() membuka file, parameter kedua menentukan modenya
  • Mode "r" untuk membaca, dan file wajib ditutup dengan close()
  • read() mengambil semua isi, readline() satu baris, readlines() semua baris sebagai list
  • Iterasi langsung pada objek file paling hemat untuk file besar
  • Bungkus open() dengan try dan except FileNotFoundError agar program tidak berhenti
  • Tentukan encoding="utf-8" untuk hasil yang konsisten

Langkah Selanjutnya

Kamu sudah bisa mengambil data dari file. Tapi data yang dibaca saja tidak berguna kalau tidak pernah ada yang menulisnya.

Artikel selanjutnya membahas Menulis File di Python, cara menyimpan hasil program ke file dengan mode w dan a.