2010-01-18 9 views
5

Jestem nowy w Pythonie. Z zawodu jestem programistą C. Mam plik, którego nagłówek ma określone dane, które muszę wyodrębnić. Na przykład bajtu 0-5 ma magiczne, bajty 6-8 ma przesunięcie itpJak odczytywać nagłówki plików w Pythonie podobne do C?

W C (przykład):

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

Następnie w moim funkcji, to należy wykonać następujące czynności:

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

Wtedy mogę uzyskać dostęp do danych nagłówka jak ten ptr-> typu ptr-> magia itp

Jak mogę osiągnąć podobny efekt w Pythonie? Ponieważ zmienne Pythona nie mają typów, jaki jest najlepszy sposób dostępu do danych nagłówka pliku?

Potrzebuję użyć danych nagłówka do podejmowania pewnych decyzji.

Dzięki z góry.

Odpowiedz

6

Jednym ze sposobów jest użycie modułu python struct, dokumentami są here.
Inną opcją, jeśli potrzebujesz czegoś mocniejszego, jest skorzystanie z niesamowitej biblioteki construct, która może wykonać powyższe i wiele więcej.

3

Zazwyczaj jest to wykonywane przy użyciu modułu struct w języku Python. Pozwala wyodrębnić wartości z upakowanych reprezentacji binarnych, w oparciu o dostarczone przez ciebie ciągi specyfikacji formatu.

Załadowałbyś dane za pomocą binarnego wejścia/wyjścia do ciągu, a następnie rozpakuj go za pomocą struct.unpack().

Powiązane problemy