2

根据 zip 文件标准:http ://www.pkware.com/documents/casestudies/APPNOTE.TXT它还支持将 zip 文件拆分为多个文件:

      Spanned/Split archives created using PKZIP for Windows
      (V2.50 or greater), PKZIP Command Line (V2.50 or greater),
      or PKZIP Explorer will include a special spanning 
      signature as the first 4 bytes of the first segment of
      the archive.  This signature (0x08074b50) will be 
      followed immediately by the local header signature for
      the first file in the archive.  

      A special spanning marker may also appear in spanned/split 
      archives if the spanning or splitting process starts but 
      only requires one segment.  In this case the 0x08074b50 
      signature will be replaced with the temporary spanning 
      marker signature of 0x30304b50.  Split archives can
      only be uncompressed by other versions of PKZIP that
      know how to create a split archive.

      The signature value 0x08074b50 is also used by some
      ZIP implementations as a marker for the Data Descriptor 
      record.  Conflict in this alternate assignment can be
      avoided by ensuring the position of the signature
      within the ZIP file to determine the use for which it
      is intended.  

知道如何检查该签名或其他方式来检查一个 zip 是否拆分为多个文件吗?

4

1 回答 1

2

他们在标准中讨论的特定签名,即PK\007\008根本不由 zipfile 处理,这可以通过对库源的 grepping 看出(我在 Python 3.2 中得到了相同的结果):

# grep PK /usr/lib/python2.7/zipfile.py 

stringEndArchive = "PK\005\006"
stringCentralDir = "PK\001\002"
stringFileHeader = "PK\003\004"
stringEndArchive64Locator = "PK\x06\x07"
stringEndArchive64 = "PK\x06\x06"

因此,我怀疑您是否可以为此目的使用该库。不妨尝试通过扩展库自己找到该签名。

于 2012-08-20T14:27:40.607 回答