I am trying to include a binary file within a zip file and below is the code snippet:
I first unzip the zip contents into a temporary location and add few more files and zip it back to a new archive.
import zipfile
def test(fileName, tempDir):
# unzip the file contents,may contain binary files
myZipFile = zipfile.ZipFile(fileName, "r")
for name in myZipFile.namelist():
toFile = tempDir + "/" + name
fd = open(toFile, "w")
fd.write(myZipFile.read(name))
fd.close()
myZipFile.close()
# code which post processes few of the files goes here
# zip it back
newZip = zipfile.ZipFile(fileName, mode="w")
try:
fileList = os.listdir(tempDir)
for name in fileList:
name = tempDir + "/" + name
newZip.write(name, os.path.basename(name))
newZip.close()
except Exception:
print("Exception occured while writing to PAR file: " + fileName)
Some of the files may be binary files. The zipping code works fine but when i try to unzip it using linux ‘ unzip or python’s zip module , i get the below error:
zipfile corrupt. (please check that you have transferred or
created the zipfile in the appropriate BINARY mode and that you have
compiled UnZip properly)
And am using python 2.3
What’s going wrong here ?
Hmm not sure if its a bug in python 2.3. Current work environment do not allow me to upgrade to a higher version of python 🙁 🙁 🙁
The below workaround worked: