2011-03-16 73 views
7

python中用来确定字符串是否被zlib压缩的最快方法是什么?我正在使用这个。如何快速检测字符串是否被zlib压缩?

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

我确定有一种更优雅的方式。

+3

永远不要使用裸'除非:' - 它会让你错误的结果。使用'除了zlib.error:'来代替正确的错误。 – nosklo 2011-03-16 11:52:33

+0

好的建议。谢谢。 – LouisChiffre 2011-03-16 21:48:20

回答

10

你可以检查标题信息的前2个字节 - 但它不是100%安全的。

http://www.faqs.org/rfcs/rfc1950.html,第2.2章

+0

谢谢,我该如何从python字符串中检索字节? – LouisChiffre 2011-03-16 08:56:06

+0

您可以在单个字符上使用'ord()'(例如'ord(your_str [0])')来获取该ASCII字符的整数值。然后你可以使用按位运算符('&','|','^')来检查特定的位。 – Amber 2011-03-16 08:57:47

+0

谢谢。有用。 – LouisChiffre 2011-03-16 09:01:06