test_zipfile.py
来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 79 行
PY
79 行
import zlib # implied prerequisiteimport zipfile, os, StringIO, tempfilefrom test_support import TestFailedsrcname = "junk9630"+os.extsep+"tmp"zipname = "junk9708"+os.extsep+"tmp"def zipTest(f, compression, srccontents): zip = zipfile.ZipFile(f, "w", compression) # Create the ZIP archive zip.write(srcname, "another"+os.extsep+"name") zip.write(srcname, srcname) zip.close() zip = zipfile.ZipFile(f, "r", compression) # Read the ZIP archive readData2 = zip.read(srcname) readData1 = zip.read("another"+os.extsep+"name") zip.close() if readData1 != srccontents or readData2 != srccontents: raise TestFailed, "Written data doesn't equal read data."try: fp = open(srcname, "wb") # Make a source file with some lines for i in range(0, 1000): fp.write("Test of zipfile line %d.\n" % i) fp.close() fp = open(srcname, "rb") writtenData = fp.read() fp.close() for file in (zipname, tempfile.TemporaryFile(), StringIO.StringIO()): zipTest(file, zipfile.ZIP_STORED, writtenData) for file in (zipname, tempfile.TemporaryFile(), StringIO.StringIO()): zipTest(file, zipfile.ZIP_DEFLATED, writtenData)finally: if os.path.isfile(srcname): # Remove temporary files os.unlink(srcname) if os.path.isfile(zipname): os.unlink(zipname)# This test checks that the ZipFile constructor closes the file object# it opens if there's an error in the file. If it doesn't, the traceback# holds a reference to the ZipFile object and, indirectly, the file object.# On Windows, this causes the os.unlink() call to fail because the# underlying file is still open. This is SF bug #412214.#fp = open(srcname, "w")fp.write("this is not a legal zip file\n")fp.close()try: zf = zipfile.ZipFile(srcname)except zipfile.BadZipfile: os.unlink(srcname)# make sure we don't raise an AttributeError when a partially-constructed# ZipFile instance is finalized; this tests for regression on SF tracker# bug #403871.try: zipfile.ZipFile(srcname)except IOError: # The bug we're testing for caused an AttributeError to be raised # when a ZipFile instance was created for a file that did not # exist; the .fp member was not initialized but was needed by the # __del__() method. Since the AttributeError is in the __del__(), # it is ignored, but the user should be sufficiently annoyed by # the message on the output that regression will be noticed # quickly. passelse: raise TestFailed("expected creation of readable ZipFile without\n" " a file to raise an IOError.")
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?