Hãy tưởng tượng bạn có một thư viện để làm việc với một số loại tập tin cấu hình hoặc tệp XML. Thư viện đọc toàn bộ tệp vào bộ nhớ và cung cấp các phương thức để chỉnh sửa nội dung. Khi bạn hoàn thành thao tác nội dung, bạn có thể gọi số write
để lưu nội dung vào tệp. Câu hỏi đặt ra là làm thế nào để làm điều này một cách an toàn.Làm cách nào để ghi một tệp an toàn?
Ghi đè tệp hiện có (bắt đầu ghi vào tệp gốc) rõ ràng là không an toàn. Nếu phương pháp write
thất bại trước khi nó được thực hiện, bạn kết thúc với một nửa tập tin bằng văn bản và bạn đã bị mất dữ liệu.
Một lựa chọn tốt hơn sẽ được ghi vào một tập tin tạm thời nơi nào đó, và khi các phương pháp write
đã hoàn tất, bạn sao chép các tập tin tạm thời vào file gốc.
Bây giờ, nếu bản sao bằng cách nào đó không thành công, bạn vẫn lưu chính xác dữ liệu trong tệp tạm thời. Và nếu bản sao thành công, bạn có thể xóa tệp tạm thời.
Trên hệ thống POSIX, tôi đoán bạn có thể sử dụng cuộc gọi hệ thống rename
là một hoạt động nguyên tử. Nhưng làm thế nào bạn sẽ làm điều này tốt nhất trên một hệ thống Windows? Cụ thể, cách bạn xử lý tốt nhất điều này bằng cách sử dụng Python?
Ngoài ra, còn có một lược đồ khác để ghi một cách an toàn vào tệp không?
Tại sao phải sao chép? Tại sao không đổi tên? –