26.zip打包
# -*- coding: utf-8 -*-
"""使用 Python 在内存中生成 zip 文件"""
 
import os
import zipfile
import StringIO
import requests
 
class InMemoryZip(object):
 
    def __init__(self):
        # Create the in-memory file-like object
        self.in_memory_zip = StringIO.StringIO()
 
 
    def appendLocalFile(self, file_path, file_name=None):
        u"从本地磁盘读取文件,并将其添加到压缩文件中"
 
        if file_name is None:
            p, fn = os.path.split(file_path)
        else:
            fn = file_name
 
        c = open(file_path, "rb").read()
        self.append(fn, c)
 
        return self
    def appendNetFile(self, url_path, file_name=None):
        u"网络文件"
        rs = requests.get(url_path)
        #with open(file_name, 'wb') as file:  # 以byte形式将图片数据写入
        #    file.write(rs.content)
        #    file.flush()
        #file.close()
        self.append(file_name, rs.content)#open(file_name, 'rb').read())
        return self
 
 
    def append(self, filename_in_zip, file_contents):
        """Appends a file with name filename_in_zip and contents of file_contents to the in-memory zip."""
 
        # Get a handle to the in-memory zip in append mode
        zf = zipfile.ZipFile(self.in_memory_zip, "a", zipfile.ZIP_DEFLATED, False)
 
        # Write the file to the in-memory zip
        zf.writestr(filename_in_zip, file_contents)
 
        # Mark the files as having been created on Windows so that
        # Unix permissions are not inferred as 0000
        for zfile in zf.filelist:
            zfile.create_system = 0
 
        return self
 
 
    def read(self):
        """Returns a string with the contents of the in-memory zip."""
 
        self.in_memory_zip.seek(0)
 
        return self.in_memory_zip.read()
 
 
    def writetofile(self, filename):
        """Writes the in-memory zip to a file."""
 
        f = file(filename, "wb")
        f.write(self.read())
        f.close()
 
 
if __name__ == "__main__":
    # Run a test
    imz = InMemoryZip()
    #imz.append("test.txt", "Another test").append("test2.txt", "Still another")
    imz.appendNetFile('url', 'file_name.png')
    imz.writetofile("test.zip")
    http://www.cnblogs.com/makexu/

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号