获取 zip 文件中文件夹的名称 - Python

Flo*_*ora 5 python directory zipfile

我一直在搜索整个 stackoverflow 以了解如何从 zip 文件路径中仅提取子文件夹的名称。

我尝试使用 tkinter 来获取 zip 路径:

Import os
from tkinter import filedialog
import tkinter as tk
from zipfile import ZipFile

root = tk.Tk()
root.withdraw()
root.filename = filedialog.askopenfilename(initialdir=os.getcwd(), title="Select file", filetypes=[("zip", "*.zip")])
Run Code Online (Sandbox Code Playgroud)

并使用 ZipFile 和 namelist 来获得所有子文件夹的名称。

with ZipFile(root.filename, 'r') as f:
    names = f.namelist()
Run Code Online (Sandbox Code Playgroud)

但是,我明白了:

['CS10/', 'CS10/.DS_Store', '__MACOSX/', '__MACOSX/CS10/', '__MACOSX/CS10/._.DS_Store', etc........
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法只获取文件夹名称,在这种情况下是 CS10 等等。

示例:如果我在 zip 文件路径(Users/Kiona/fruits.zip)中有 3 个名为“Apple”“Orange”“Pear”的文件夹,我想打印 ['Apple','Orange','Pear']

我对 Python 很陌生,所以我希望这听起来不是一个非常愚蠢的问题。

干杯!

jos*_*son 6

我还没有测试过这个,但以下可能是你正在寻找的:

with ZipFile(root.filename, 'r') as f:
    names = [info.filename for info in f.infolist() if info.is_dir()]
Run Code Online (Sandbox Code Playgroud)

作为参考,请查看https://docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.infolisthttps://docs.python.org/3.6/library/zipfile.html#zipfile.ZipInfo .is_dir