classification
Title: Provide a way to skip magic-number search in ZipFile(mode='a')
Type: enhancement Stage:
Components: Library (Lib) Versions: Python 3.10
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Bart Robinson
Priority: normal Keywords:

Created on 2020-12-07 22:40 by Bart Robinson, last changed 2020-12-07 22:40 by Bart Robinson.

Messages (1)
msg382691 - (view) Author: Bart Robinson (Bart Robinson) Date: 2020-12-07 22:40
When a ZipFile object is created with mode='a', the existing file contents are checked for the magic number b"PK\005\006" near the end of the file.  If a non-zipfile just happens to contain this magic number, it can confuse the library into assuming the file is a zipfile when it is not.  It would be great if ZipFile.__init__() provided a way to skip the magic-number check and force a new central directory to be appended to the file.

This could take the form of an additional named argument like ZipFile.__init__(force_append=True), or an additional character in the mode string, like 'a+'.  Either of these options should be backward-compatible with existing code.

Currently, my company has code that uses monkey-patching to work around the lack of this feature in the standard library.  We use mode='a' to append metadata to files in existing formats that can contain arbitrary binary data and so occasionally include the magic number.
History
Date User Action Args
2020-12-07 22:40:05Bart Robinsoncreate