バイナリ ファイルを zip ファイルに含めようとしていますが、以下にコード スニペットを示します。最初に zip の内容を一時的な場所に解凍し、さらにいくつかのファイルを追加して、新しいアーカイブに戻します。
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
一部のファイルはバイナリ ファイルである場合があります。圧縮コードは正常に機能しますが、linux ' unzip または python's zip module を使用して解凍しようとすると、次のエラーが発生します。
zip ファイルが破損しています。(適切なバイナリ モードで zip ファイルを転送または作成したこと、および UnZip を適切にコンパイルしたことを確認してください)
そしてpython 2.3を使用しています
ここで何がうまくいかないのですか?