2011-03-16 13 views
7

यह निर्धारित करने के लिए पाइथन में सबसे तेज़ तरीका क्या है कि एक स्ट्रिंग को zlib द्वारा संपीड़ित किया गया था। मैं वर्तमान में इसका उपयोग कर रहा हूं।स्ट्रिंग zlib संपीड़ित होने पर जल्दी से कैसे पता लगाया जाए?

def iscompressed(data): 
    result = True 
    try: 
     s =zlib.decompress(data) 
    except: 
     result = False 
    return result 

मुझे यकीन है कि एक और शानदार तरीका है।

+3

कभी एक नंगे 'छोड़कर उपयोग नहीं करते हैं: '- यह आप मिल जाएगा झूठी परिणाम नहीं। सही त्रुटि को पकड़ने के लिए 'zlib.error को छोड़कर' का उपयोग करें। – nosklo

+0

अच्छा सुझाव। धन्यवाद। – LouisChiffre

उत्तर

10

आप कर सकते हैं शीर्षलेख जानकारी के लिए पहले 2 बाइट की जांच करें - हालांकि, यह 100% सुरक्षित नहीं है।

http://www.faqs.org/rfcs/rfc1950.html देखें, अध्याय 2.2

+0

धन्यवाद, मैं एक पायथन स्ट्रिंग से बाइट कैसे प्राप्त करूं? – LouisChiffre

+0

आप उस अक्षर पर 'ord() 'का उपयोग कर सकते हैं (उदाहरण के लिए,' ord (your_str [0]) ') उस ascii चरित्र का पूर्णांक मान प्राप्त करने के लिए। इसके बाद आप विशिष्ट बिट्स की जांच के लिए बिटवाई ऑपरेटरों ('&', '|', '^') का उपयोग कर सकते हैं। – Amber

+0

धन्यवाद। यह काम करता हैं। – LouisChiffre

2

एक ही तरीका है 100% सुनिश्चित करने के लिए एक ओर जहां आप zlib संपीड़न विधि की तलाश द्वारा एक उचित अनुमान लगाने के लिए कर सकते हैं वास्तव में यह संपीड़ित कोशिश करने के लिए है, + झंडे बिट्स शीर्षक:

http://www.faqs.org/rfcs/rfc1950.html

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