python – 递归解压缩归档,存储(文件名,提取内容)在字典中

你能帮我写一个函数返回:

dict("file1.txt": list(<contents of file1>),
     "file2.txt": list(<contents of file2>),
     "file3.txt": list(<contents of file3>),
     "file4.txt": list(<contents of file4>))

输入:

    file.zip:
        outer\
        outer\inner1.zip:
                file1.txt
                file2.txt
        outer\inner2.zip:
                file3.txt
                file4.txt

我的尝试(以下例外情况):

> http://ideone.com/s1tyb

WindowsError:[错误32]进程无法访问该文件,因为它正被另一个进程使用
> http://ideone.com/Y2oTw

“文件不是zip文件”
> http://ideone.com/0HoGa

“文件不是zip文件”
> http://ideone.com/owmdK

AttributeError:ZipFile实例没有属性’seek’

解决方法:

最后解决了……得到了一些帮助:Extracting a zipfile to memory?;

from zipfile import ZipFile, is_zipfile

def extract_zip(input_zip):
    input_zip=ZipFile(input_zip)
    return {name: input_zip.read(name) for name in input_zip.namelist()}

def extract_all(input_zip): 
    return {entry: extract_zip(entry) for entry in ZipFile(input_zip).namelist() if is_zipfile(entry)}
上一篇:Python入门很难吗? 为什么越来越多的人都学Python?


下一篇:C# .NET 使用第三方类库DotNetZip解压/压缩Zip文件 (ZT)