2010-10-14 25 views

Trả lời

17

Tôi sẽ tưởng tượng rằng nó từ trước khi tệp là trình lặp và được duy trì để tương thích ngược. Ngay cả đối với một lớp lót, đó là hoàn toàn khá dư thừa như list(fh) sẽ làm điều tương tự theo cách trực quan hơn. Điều đó cũng mang lại cho bạn sự tự do để làm set(fh), tuple(fh), v.v.

Xem gnibbler's answer.

+0

+1 Điểm tốt trên 'collection_constructor (fh)'. Tôi phải thừa nhận, nó không bao giờ xảy ra với tôi. – delnan

+0

Khi tôi bắt đầu với Python, tôi đã sử dụng 'list (fh)' trước khi tôi nhận ra nó là thừa. Bạn có chắc chắn nó là cho khả năng tương thích ngược? Tôi có nghĩa là họ đã phá vỡ rất nhiều điều đó với Python 3, vậy tại sao không làm sạch điều này quá! –

+0

@ Ashish, Họ thực sự đã không phá vỡ nhiều và không có tôi không chắc chắn nó cho khả năng tương thích ngược. Tôi bắt đầu lập trình python khi 2.6 không hoàn toàn mới vì vậy tôi là một cái gì đó của một noob. Tôi thậm chí không bao giờ viết mã cho 2,5 ví dụ vì vậy tôi không biết lịch sử ở tất cả. – aaronasterling

1

readlines() trả về danh sách các dòng mà bạn có thể muốn nếu bạn không có kế hoạch lặp qua từng dòng.

+2

'danh sách (fh)' sẽ thực hiện tương tự. –

+0

@Ashish: 'readlines ([size])' lấy một đối số tùy chọn. – MattH

+1

@MattH, lưu ý rằng kích thước là một gợi ý, và nhiều hơn hoặc ít hơn dòng có thể được trả lại –

16

Chủ yếu là nó có khả năng tương thích ngược. readlines có cách nào đó trước khi các đối tượng tập tin có thể lặp lại

Sử dụng các đường dây đọc với đối số kích thước cũng là một trong những cách nhanh nhất để đọc từ tệp vì nó đọc một loạt dữ liệu trong một lần truy cập, nhưng không cần cấp phát bộ nhớ toàn bộ tệp cùng một lúc

Các vấn đề liên quan