how to zip a StringIO object?

Dave Angel davea at ieee.org
Wed Oct 28 15:15:20 EDT 2009


Nagy Viktor wrote:
> Hi,
>
> I try to run the following code:
>
> def generate_zip(object_list, template):
>     result = StringIO.StringIO()
>     zipped = zipfile.ZipFile(result, "w")
>     for object in object_list:
>         pdf = generate_pdf(object, template)
>         if not pdf:
>             raise IOError("Problem with generating invoice %d" %
> object.pk)
>         zipped.writestr("invoice-%d.pdf" % object.pk, pdf)
>     zipped.close()
>     return result.getvalue()
>
> where generate_pdf returns a valid pdf file's string content, more
> precisely it returns a StringIO.getvalue() call containing the pdf
> "string".
>
> When I add this string to the zip file, I get a problem. Namely, the
> zipped files are chmoded to non-readable when extracted. How can I
> change this?
>
> thanks,
> V
>
>   
You don't tell us the version of Python, nor the OS environment, nor 
what utility you're using to extract these files.

When I supply the missing imports, shortcircuit the missing classes and 
functions, and add some mainline code, I can run this with no problem.  
Are you also running on Windows XP, using 2.6.2, using the same missing 
code as I, and extracting with Winzip 11.2?

DaveA




More information about the Python-list mailing list