I have a StringIO() file-like object, and I am trying to write it to a ZipFile(), but I get this TypeError:
coercing to Unicode: need string or buffer, cStringIO.StringI found
Here is a sample of the code I am using:
file_like = StringIO()
archive = zipfile.ZipFile(file_like, 'w', zipfile.ZIP_DEFLATED)
# my_file is a StringIO object returned by a remote file storage server.
archive.write(my_file)
The docs say that StringIO() is a file-like class and that ZipFile() can accept a file-like object. Is there something I am missing?
To add a string to a ZipFile you need to use the writestr method and pass the string from StringIO using getvalue method of the StringIO instance
e.g.
Note you also need to give the name of the string to say where it is placed in the zip file.