For AI agents: use /llms.txt for the Nakafa content index.
Python membaca dan menulis file melalui objek file. Dalam text mode, objek ini mendekode byte yang tersimpan menjadi string dengan encoding yang dipilih. Dalam binary mode, byte diteruskan tanpa perubahan.
Cara paling sederhana untuk membaca file adalah mengambil seluruh isinya sekaligus ke dalam memori.
# Membaca seluruh file teks UTF-8 sekaligus
with open('file.txt', 'r', encoding='utf-8') as f:
txt = f.read()
print(txt)
# Output: [isi lengkap file akan ditampilkan]open() membuat objek file, read() mengambil teksnya, dan blok with menutup file secara otomatis ketika blok berakhir, termasuk ketika operasi terhenti oleh exception.
Untuk file yang besar, membaca baris per baris lebih efisien karena tidak memuat seluruh file ke memori sekaligus.
# Membaca file teks UTF-8 baris per baris
with open('file.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line, end='')
# Catatan: setiap baris mempertahankan karakter newline
# Parameter end='' mencegah penambahan newline tambahanSetiap baris mempertahankan newline di akhirnya jika karakter itu memang ada. Baris terakhir mungkin tidak memiliki newline. Pengaturan end='' mencegah print() menambahkan newline kedua.
Menulis file memungkinkan program menyimpan data atau hasil perhitungan ke dalam file untuk digunakan kemudian.
# Menulis string ke file teks UTF-8
with open('file.txt', 'w', encoding='utf-8') as f:
for i in range(1, 11):
f.write(f'Line {i}\n')
# File akan berisi:
# Line 1
# Line 2
# Line 3
# ... (sampai Line 10)Kamu dapat mengalihkan output fungsi print() langsung ke file menggunakan parameter file.
# Mengalihkan output print ke file teks UTF-8
with open('file.txt', 'w', encoding='utf-8') as f:
for i in range(1, 21):
print("Line", i, file=f)
# File akan berisi output print yang dialihkan
# Line 1
# Line 2
# ... (sampai Line 20)Argumen file memakai kembali pemformatan print() sambil mengarahkan teks hasilnya ke objek file yang dipilih.
Python menyediakan berbagai mode untuk membuka file sesuai dengan kebutuhan operasi yang akan dilakukan.
# Membaca file teks yang sudah ada
with open('data.txt', 'r', encoding='utf-8') as f:
first_line = f.readline()
# Membuat file atau mengosongkan isi lamanya
with open('output.txt', 'w', encoding='utf-8') as f:
f.write('isi baru')
# Membuat file atau menambahkan data setelah isi yang ada
with open('log.txt', 'a', encoding='utf-8') as f:
f.write('peristiwa berikutnya\n')
# Membaca dan menulis file yang ada tanpa mengosongkannya saat dibuka
with open('data.txt', 'r+', encoding='utf-8') as f:
original = f.read()Mode menentukan apakah file harus sudah ada, apakah pembukaan file mengosongkan isi lama, dan operasi apa yang diizinkan. r dan r+ memerlukan file yang sudah ada. w membuat atau mengosongkan file, sedangkan a membuat atau menambahkan data. Sufiks b memilih binary mode yang tidak memakai encoding.
Python menyediakan beberapa metode untuk membaca file dengan cara yang berbeda sesuai kebutuhan.
# Mencoba beberapa metode pembacaan teks
with open('file.txt', 'r', encoding='utf-8') as f:
# Membaca paling banyak 10 karakter
s = f.read(10)
print("10 karakter:", s)
# Kembali ke awal dan membaca seluruh file
f.seek(0)
s = f.read()
print("Seluruh file:", s)
# Kembali lagi dan membaca satu baris beserta newline jika ada
f.seek(0)
s = f.readline()
print("Satu baris:", repr(s))File yang baru dibuka berawal pada posisi stream pertamanya. Pembacaan memajukan posisi tersebut. Dalam text mode, tell() dapat menghasilkan cookie posisi yang opaque, bukan indeks karakter sederhana. Simpan dan gunakan kembali posisi itu daripada menghitung offset byte sendiri.
# Demonstrasi posisi file
with open('sample.txt', 'r', encoding='utf-8') as f:
first_read = f.read(5) # Membaca paling banyak 5 karakter
saved_position = f.tell()
print("Bacaan pertama:", first_read)
second_read = f.read(3) # Melanjutkan dari posisi saat ini
print("Bacaan kedua:", second_read)
f.seek(saved_position) # Kembali ke posisi text stream yang disimpan
repeated = f.read(3)
print("Bacaan ulang:", repeated)Dalam text mode, read() dan readline() mengembalikan string serta menghasilkan '' ketika tidak ada teks tersisa. Dalam binary mode, keduanya mengembalikan bytes dan memakai b'' pada akhir file. Iterasi berhenti otomatis ketika mencapai akhir.
Python menyediakan statement with untuk penanganan file yang lebih aman dan otomatis.
# Menggunakan with statement untuk penanganan file aman
with open('file.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
# File otomatis tertutup setelah keluar dari blok with
# Menulis dengan with statement
with open('output.txt', 'w', encoding='utf-8') as f:
f.write("Hello World!")
f.write("\nBaris kedua")
# File otomatis tertutup dan disimpan
# Membaca dan menulis bersamaan
with open('input.txt', 'r', encoding='utf-8') as input_file, open('output.txt', 'w', encoding='utf-8') as output_file:
data = input_file.read()
output_file.write(data.upper())
# Kedua file otomatis tertutupStatement with memastikan file selalu tertutup dengan benar, bahkan jika terjadi error dalam program. Ini mencegah masalah seperti file yang terbuka terus dan menghabiskan sumber daya sistem.