From: SourceForge.net <no...@so...> - 2004-02-29 14:26:14
|
Bugs item #621502, was opened at 2002-10-10 18:37 Message generated for change (Comment added) made by ellisj You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112867&aid=621502&group_id=12867 Category: Library Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: zipfile usage in append mode Initial Comment: I have been trying to use zipfile.ZipFile() with mode="a" to add files to an archive. However when I try to perform a write, each file simply overwrites the previous one. I have tried exactly the same code in Python 2.2 and it works differently. For instance, in Jython, opening a non- existent zip file with mode="a" creates the file, whereas a runtime error is generated if you perform the same action in Python, which requires the file to be present. If I create the file, open it with mode="a" and write files to the archive, this works fine with Python. Perhaps someone out there can verify that this is indeed a bug, or perhaps I am doing somthing wrong. I have attached some code to explain below. import zipfile #File c:\test.zip does not exist... file = zipfile.ZipFile("c:\test.zip", mode="a") #Above, if done in Python, creates a runtime error! #Add first file to archive file.write("c:\test1.txt") #Add second file to archive file.write("c:\test2.txt") file.close() #Oh dear, appears that archive now just consists of #c:\test2.txt In the meantime the bug can be got around by reading in the zip file contents if it exists, then opening the same zip file in write mode, copying back the contents then adding the new file. ---------------------------------------------------------------------- Comment By: Jonathan Ellis (ellisj) Date: 2004-02-29 14:14 Message: Logged In: YES user_id=657828 I submitted a patch that has zipfile correctly error when mode=a for a file that does not exist, but I cannot reproduce the main thrust of this report: <p> >>> f = zipfile.ZipFile("bar.zip", mode="w") >>> f.write(".emacs") >>> f.write(".profile") >>> f.close() >>> f = zipfile.ZipFile("bar.zip", mode="r") >>> f.printdir() File Name Modified Size .emacs 2003-12-26 16:12:42 4910 .profile 2003-11-12 12:14:18 41 >>> f.close() >>> f = zipfile.ZipFile("bar.zip", mode="a") >>> f.write(".psql_history") >>> f.close() >>> f = zipfile.ZipFile("bar.zip", mode="r") >>> f.printdir() File Name Modified Size .emacs 2003-12-26 16:12:42 4910 .profile 2003-11-12 12:14:18 41 .psql_history 2004-01-27 09:02:02 5721 >>> </p> ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112867&aid=621502&group_id=12867 |