Tôi đã gặp một vấn đề lạ khi làm việc với các tệp trong python. Hãy nói rằng tôi có một tập tin văn bản và một đoạn mã đơn giản mà đọc nội dung của tập tin và sau đó viết lại nó với nội dung không thay đổi gì.Đọc và viết của Python thêm x00 vào tệp
File.txt
Đây là một tập tin thử nghiệm
mã Python
f=open(File.txt,'r+')
data=f.read()
f.truncate(0)
f.write(data)
f.close()
Sau khi chạy đoạn mã trên File.txt
có vẻ là như vậy. Tuy nhiên, khi tôi mở nó trong một trình soạn thảo hex tôi đã ngạc nhiên khi thấy rất nhiều byte \x00
(NULL) trước nội dung thực tế của tệp văn bản, rằng không phải là ở đó trước đây.
Có ai vui lòng giải thích không?
Không, không, không. '.truncate' cắt ngắn tệp. Đó là nó; không có byte trống. Nếu mã kết thúc bằng 'f.truncate (0)', thì tệp sẽ trở thành không có kích thước. Đó là '.write' trên một tệp offset khác với 0 làm cho hệ điều hành điền vào các byte * không được phép * với các byte rỗng (hoặc chỉ * giả định * rằng các byte không được phép là null; nó phụ thuộc vào hệ thống tệp). – tzot