2010-01-18 20 views
5

Tôi mới sử dụng Python. Tôi là một lập trình viên C theo nghề nghiệp. Tôi có tệp, có tiêu đề có một số dữ liệu cụ thể, mà tôi cần trích xuất. Ví dụ, Byte 0-5 có ma thuật, Byte 6-8 đã bù đắp, vvCách đọc tiêu đề tệp bằng Python tương tự như C?

Trong C (ví dụ):

struct { 
    int32_t payload_offset, 
    int32_t len, 
    char *magic, 
    int32_t type 
    int32_t header_size 
} file_hdr; 

Sau đó, trong chức năng của tôi, tôi làm như sau:

file_hdr *hdr; 
ptr = &hdr; 
fd = open(path_to_file, "r"); 
num_read = read(fd, ptr, bytes). 

Sau đó, tôi có thể truy cập dữ liệu tiêu đề như ptr-> loại này, ptr-> ma thuật, v.v.

Làm cách nào để đạt được hiệu ứng tương tự trong Python? Vì các biến Python không có loại, cách tốt nhất để truy cập dữ liệu tiêu đề tệp là gì?

Tôi cần sử dụng dữ liệu tiêu đề để đưa ra một số quyết định.

Cảm ơn trước.

Trả lời

6

Một cách là sử dụng mô-đun python struct, tài liệu là here.
Một tùy chọn khác, nếu bạn cần thứ gì đó mạnh mẽ hơn, hãy sử dụng thư viện tuyệt vời construct có thể thực hiện những điều trên và nhiều hơn thế nữa.

3

Điều này thường được thực hiện bằng mô-đun struct bằng Python. Nó cho phép bạn trích xuất các giá trị từ các biểu diễn nhị phân được đóng gói, được điều khiển bằng các chuỗi đặc tả định dạng mà bạn cung cấp.

Bạn sẽ tải dữ liệu bằng cách sử dụng nhị phân I/O vào một chuỗi, sau đó giải nén nó bằng cách sử dụng struct.unpack().

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