2012-11-07 43 views

Trả lời

9

Đây là hệ điều hành cụ thể và cụ thể. hoạt động file.seek() được giao cho cuộc gọi fseek(3) C đối với các tệp cấp hệ điều hành thực tế.

+0

Vậy nền tảng này có phụ thuộc vào việc triển khai không? – jlconlin

+0

Có, với việc phân chia triển khai giữa libc và OS. –

+0

Vì vậy, nó có thể/dễ dàng để làm điều này mà không cần bắt đầu từ đầu của tập tin? – jlconlin

4

Cần đủ thông minh để chỉ sao lưu 10 byte, nhưng tôi cho rằng chi tiết thực sự phụ thuộc vào thư viện hệ thống tập tin/hệ điều hành/thời gian chạy mà bạn đang sử dụng.

Lưu ý rằng nếu bạn chỉ muốn sao lưu 10 byte, không cần tell.

F.seek(-10,1) 
+0

Cảm ơn bạn đã chia sẻ điều này. Đây là một thực hiện đơn giản hơn nhiều so với tôi đã làm ví dụ của tôi. – jlconlin

8

Theo Python 2.7's docs:

file.seek(offset[, whence])

Đặt vị trí hiện tại của tập tin, như fseek stdio của(). Đối số whence là tùy chọn và mặc định là os.SEEK_SET hoặc 0 (tệp tuyệt đối vị trí); các giá trị khác là os.SEEK_CUR hoặc 1 (tìm kiếm tương ứng với vị trí hiện tại) và os.SEEK_END hoặc 2 (tìm kiếm tương ứng với kết thúc của tệp là ).

Giả sử bạn muốn đi 10 byte sao tương ứng với vị trí của bạn:

file.seek(-10, 1) 
-4

theo các tài liệu, bạn cần làm f.seek(offset, from_what), hoặc trong trường hợp của bạn, F.seek(-10, loc)

ví dụ của bạn nên hoạt động, nhưng điều này rõ ràng hơn

+4

Điều này khá gây hiểu nhầm. Câu trả lời này chỉ hoạt động nếu 'loc' là 1. – mgilson

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