Raimondo Giammanco added the comment:
SilentGhost, thank you for your reply but I am probably missing something with
it. Maybe there is some misunderstanding because of my unclear report. Please
let me sum up my point and excuse some repetitiveness
>From the documentation of .writestr:
``If given, compress_type overrides the value given for the compression
parameter to the constructor for the new entry``
I believed to understand that .writestr would have used the same
compression_type passed creating the `z' instance. So, having already passed
ZIP_DEFLATED to the constructor, in my opinion, passing it again would have
been an useless repetition.
However, as per your suggestion,I tried to explicitly pass ZIP_DEFLATED to
.writestr too:
from zipfile import ZipFile, ZIP_DEFLATED
document = '/tmp/example.odt'
S2b, R2b = 'SUBST'.encode(), 'REPLACEMENT'.encode()
with ZipFile(document,'a', ZIP_DEFLATED) as z:
xmlString = z.read('content.xml')
xmlString = xmlString.replace(S2b, R2b)
z.writestr('content.xml', xmlString, ZIP_DEFLATED)
but to no avail: with and without passing ZIP_DEFLATED to .writestr the odt
documents lose the feature explained in my first post
AFAICT, the only way to keep a fully functional odt document is not to compress
it (no ZIP_DEFLATED at all), as cited in my previous post
with ZipFile(document,'a') as z:
xmlString = z.read('content.xml')
xmlString = xmlString.replace(S2b, R2b)
z.writestr('content.xml', xmlString)
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue21685>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com