Tôi cố gắng để hiểu được những sự đánh đổi thương mại/sự khác nhau giữa chúng để cách mở tập tin để chế biếnxử lý tập tin line-by-line, cho-loop vs với
with open('data.txt') as inf:
for line in inf:
#etc
line-by-line vs
for line in open('data.txt'):
# etc
tôi hiểu rằng việc sử dụng with
đảm bảo các tập tin được đóng lại khi "với khối" (bộ?) được thoát (hoặc một ngoại lệ là phản đối). Vì vậy, tôi đã sử dụng with
kể từ khi tôi đã học về nó ở đây.
Re for
-loop: Từ tìm kiếm trên mạng và SO, có vẻ như liệu tệp có bị đóng khi số trang for
bị thoát là phụ thuộc thực hiện không? Và Tôi không thể tìm thấy bất kỳ điều gì về cách cấu trúc này sẽ xử lý các trường hợp ngoại lệ . Có ai biết không?
Nếu tôi nhầm lẫn về bất kỳ điều gì ở trên, tôi đánh giá cao các chỉnh sửa, nếu không có lý do nào để sử dụng cấu trúc for
trên with
? (Giả sử bạn có lựa chọn, nghĩa là, không bị giới hạn bởi phiên bản Python)
Điểm tốt .. Tôi nên đặt điều gì đó khi bạn có lựa chọn trong câu hỏi - nghĩa là bạn không bị giới hạn bởi phiên bản .. Tôi sẽ cập nhật câu hỏi. Vì vậy, bình chọn của bạn sẽ đi đến 'với' sau đó? – Levon
Tôi nghĩ rằng thụt lề là một lợi ích vì nó chỉ định phần nằm trong một ngữ cảnh nhất định. Bạn sẽ phải thụt lề để bọc toàn bộ khối trong một lần thử ngoại trừ việc đóng tệp trong khối cuối cùng – jdi
@jdl điểm tốt - nhưng hãy để cho nó được biết vấn đề thụt lề không phải là một trong tôi nêu ra - chỉ một tôi đã đề cập là có nhận thấy nó năm trước đây trên danh sách và các nhóm. –