2012-07-27 46 views
86

Hãy tha thứ cho sự nhầm lẫn của tôi ở đây nhưng tôi đã đọc tài liệu liên quan đến hàm seek() trong python (sau khi sử dụng nó) và mặc dù nó đã giúp tôi tôi vẫn còn một chút nhầm lẫn về ý nghĩa thực sự của nó, bất kỳ giải thích nào được đánh giá cao, cảm ơn bạn.chức năng tìm kiếm()?

+4

bạn có thể xem xét chấp nhận câu trả lời với lời giải thích tốt hơn và nhiều nghiệp hơn –

Trả lời

149

Về seek() không có quá nhiều điều phải lo lắng.

Trước hết, nó hữu ích khi vận hành trên một tệp đang mở.

Điều quan trọng cần lưu ý là cú pháp của nó là như sau:

fp.seek(offset, from_what) 

nơi fp là con trỏ tập tin bạn đang làm việc với; offset có nghĩa là bạn sẽ di chuyển bao nhiêu vị trí; from_what xác định quan điểm của bạn tham khảo:

  • : là điểm tham chiếu của bạn là bắt đầu của tập tin
  • : là điểm tham chiếu của bạn là hiện vị trí tập tin
  • : có nghĩa là điểm tham chiếu của bạn là kết thúc của tệp

nếu bỏ qua, mặc định là 0. from_what

Không bao giờ quên rằng khi quản lý tập tin, có sẽ luôn có một vị trí bên trong tập tin đó nơi bạn đang làm việc trên. Khi chỉ mở, vị trí đó là phần đầu của tập tin, nhưng khi bạn làm việc với nó, bạn có thể tiến lên.
seek sẽ hữu ích cho bạn khi bạn cần walk cùng với tệp đang mở đó, giống như đường dẫn bạn đang di chuyển.

+69

+1 để giải thích tham số thứ hai, mặc dù tôi muốn thêm rằng bạn có lẽ nên sử dụng các hằng số 'os.SEEK_SET',' os.SEEK_CUR' và 'os.SEEK_END' thay vì số ma thuật' 0', '1' và' 2' tương ứng. – ArtOfWarfare

33

Khi bạn mở tệp, hệ thống sẽ trỏ đến đầu tệp. Bất kỳ đọc hoặc viết bạn làm sẽ xảy ra ngay từ đầu. Thao tác seek() di chuyển con trỏ đó đến một phần khác của tệp để bạn có thể đọc hoặc viết tại vị trí đó. Vì vậy, nếu bạn muốn đọc toàn bộ tệp nhưng bỏ qua 20 byte đầu tiên, hãy mở tệp, tìm kiếm (20) để di chuyển đến nơi bạn muốn bắt đầu đọc, sau đó tiếp tục đọc tệp.

Hoặc giả sử bạn muốn đọc từng byte thứ 10, bạn có thể viết vòng lặp tìm kiếm (9, 1) (di chuyển 9 byte về phía trước so với vị trí hiện tại), đọc một byte, lặp lại.

+12

-1: Câu trả lời này không giải thích được tham số thứ hai, và thực ra, giống như tham số thứ hai cho biết có bao nhiêu byte được đọc. – ArtOfWarfare

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