2010-01-18 14 views
5

मैं पाइथन के लिए नया हूं। मैं पेशे से सी प्रोग्रामर हूं। मेरे पास फ़ाइल है, जिसका शीर्षलेख कुछ विशिष्ट डेटा है, जिसे मुझे निकालने की आवश्यकता है। उदाहरण के लिए, बाइट 0-5 एक जादू है, बाइट 6-8 ऑफसेट है आदिसी के समान पायथन में फ़ाइल शीर्षलेख कैसे पढ़ा जाए?

सी (एक उदाहरण) में:

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

तब मेरे समारोह में, मैं निम्न कार्य करें:

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

तब मैं इस ptr-> प्रकार की तरह हैडर डेटा का उपयोग कर सकते हैं, ptr-> जादू आदि

मैं अजगर में समान प्रभाव कैसे प्राप्त करते हैं? चूंकि पाइथन चर के प्रकार नहीं हैं, इसलिए फ़ाइल हेडर डेटा तक पहुंचने का सबसे अच्छा तरीका क्या है?

मुझे कुछ निर्णय लेने के लिए हेडर डेटा का उपयोग करने की आवश्यकता है।

अग्रिम में धन्यवाद।

उत्तर

6

एक तरीका है python struct मॉड्यूल का उपयोग करना, दस्तावेज़ here हैं।
यदि आपको कुछ और शक्तिशाली की आवश्यकता है, तो एक और विकल्प है, भयानक construct लाइब्रेरी का उपयोग करना है जो ऊपर और बहुत कुछ कर सकता है।

3

यह आमतौर पर पायथन में struct मॉड्यूल का उपयोग करके किया जाता है। यह आपको पैक किए गए बाइनरी प्रस्तुतियों से मूल्य निकालने की अनुमति देता है, जो आपके द्वारा प्रदान किए गए प्रारूप-विनिर्देश तारों द्वारा संचालित होता है।

आप स्ट्रिंग में बाइनरी I/O का उपयोग करने में डेटा लोड करेंगे, फिर struct.unpack() का उपयोग करके इसे अनपैक करें।

संबंधित मुद्दे