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 + -
显示快捷键?