从zip存档中提取单个文件而不迭代Python中的整个名称列表

Ale*_*kov 4 python zip zipfile

我有一个包含文件夹的zip文件,如下所示:

some.zip/
    some_folder/
         some.xml
         ...
Run Code Online (Sandbox Code Playgroud)

我正在使用zipfile图书馆.我要的是只开some.xml文件,但我不知道现在的some_folder名.我的解决方案如下所示:

    def get_xml(zip_file):
        for filename in zip_file.namelist():
            if filename.endswith('some.xml'):
                return zip_file.open(filename)
Run Code Online (Sandbox Code Playgroud)

我想知道除了扫描整个列表之外是否还有更好的解决方案.

ale*_*cxe 9

这将打印test.zip文件中的目录列表:

from zipfile import ZipFile


with ZipFile('test.zip', 'r') as f:
    directories = [item for item in f.namelist() if item.endswith('/')]
    print directories
Run Code Online (Sandbox Code Playgroud)

如果你知道里面只有一个目录,那就拿第一个项目:directories[0].

希望有所帮助.