Penggantian atomik berkas UTF-8
Ganti berkas UTF-8 melalui berkas sementara di direktori yang sama.
import os
from pathlib import Path
from tempfile import NamedTemporaryFile
def replace_utf8(path, text):
if not isinstance(path, (str, Path)) or type(text) is not str:
raise ValueError("replace.input")
target, data = Path(path), text.encode("utf-8")
temporary = None
try:
with NamedTemporaryFile(dir=target.parent, prefix=".swap-", delete=False) as out:
temporary = Path(out.name)
out.write(data)
os.replace(temporary, target)
finally:
if temporary is not None:
temporary.unlink(missing_ok=True)Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Proyek
Uji teks kosong, Unicode dan kegagalan penggantian, tutup pegangan sementara sebelum mengganti lalu hapus sisa tanpa mengubah berkas lama pada kegagalan itu.
import os
from pathlib import Path
from tempfile import NamedTemporaryFile
def replace_utf8(path, text):
if not isinstance(path, (str, Path)) or type(text) is not str:
raise ValueError("replace.input")
target, data = Path(path), text.encode("utf-8")
temporary = None
try:
with NamedTemporaryFile(dir=target.parent, prefix=".swap-", delete=False) as out:
temporary = Path(out.name)
out.write(data)
os.replace(temporary, target)
finally:
if temporary is not None:
temporary.unlink(missing_ok=True)Tinjau apa yang tersisa ketika pembaruan berkas gagal
Replacent adalah ruang kerja pemrograman untuk Windows yang menggunakan model AI untuk menalar perubahan yang memengaruhi berkas di disk. Mulailah dengan kode proyek dan jelaskan apa yang harus tetap ada jika pembaruan tidak dapat selesai. Minta asisten memeriksa persiapan, penulisan, penggantian, dan pembersihan sebagai satu operasi yang saling terkait. Tujuannya adalah usulan yang perilaku kegagalannya dapat Anda jelaskan sebelum mencobanya pada data berharga.
Contoh replace_utf8.py menawarkan tugas yang melibatkan berkas sementara dan penggantian target. Anda dapat meminta asisten meninjau kapan pengodean dilakukan, di mana keluaran sementara ditempatkan, dan pembersihan apa yang berjalan setelah pengecualian. Periksa kode sebenarnya dan lingkungan target, bukan menganggap satu pemanggilan penggantian sudah memenuhi semua sifat ketahanan penyimpanan yang mungkin diperlukan aplikasi Anda.
Uji operasi yang direvisi di direktori sekali pakai, dengan memeriksa isi target dan berkas yang tertinggal setelah keberhasilan maupun kegagalan terkendali. Catat hasil pengamatan dalam percakapan agar penyuntingan berikutnya menangani perilaku yang terbukti. Replacent menerima koneksi kompatibel OpenAI atau Anthropic yang didukung, dengan kredensial sesuai kebutuhan. Jika model tanpa filter tersedia di sana, Anda dapat memilihnya untuk diskusi; batas konteks, alat, dan pembatasan respons tetap bergantung pada model dan server. Pemeriksaan proyek Anda tetap menjadi bukti terpenuhinya kontrak pembaruan berkas.
Pertanyaan tentang penggantian dan pembersihan
- Apa yang harus ditentukan dalam permintaan pembaruan berkas?
Jelaskan isi target yang diharapkan setelah berhasil, apa yang harus tersisa setelah kegagalan, dan apakah berkas yang ada boleh diganti. Sertakan lingkungan target serta persyaratan pengodean agar usulan dapat diperiksa berdasarkan kondisi akhir yang konkret.
- Apakah penggantian sama dengan penyimpanan yang tahan gangguan?
Jangan menganggap demikian. Persyaratan ketahanan bergantung pada implementasi lengkap dan lingkungannya. Jika data harus bertahan setelah kerusakan sistem, nyatakan itu secara terpisah dan tinjau perilaku terkait, bukan menyimpulkannya dari pola berkas sementara.
- Bagaimana saya memeriksa perilaku pembersihan?
Gunakan berkas sekali pakai dan kasus kegagalan terkendali yang sesuai dengan proyek Anda. Setelahnya, periksa target asli maupun keluaran sementara. Baca juga jalur pengecualian, karena eksekusi yang berhasil tidak menguji pembersihan setelah operasi terputus.
- Haruskah kesalahan pembersihan menyembunyikan kegagalan awal?
Tentukan perilaku pelaporan kesalahan yang diperlukan pemanggil Anda. Periksa apakah pembersihan dapat memunculkan pengecualian lain dan mengaburkan masalah awal, lalu uji jalur itu bila memungkinkan sebelum menerima revisi operasi.
Replacent · Diperbarui 2026-10-25