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

时间:2017-10-25 23:29:28

标签: 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")])

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

with ZipFile(root.filename, 'r') as f:
    names = f.namelist()

然而,我明白了:

['CS10/', 'CS10/.DS_Store', '__MACOSX/', '__MACOSX/CS10/', '__MACOSX/CS10/._.DS_Store', etc........

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

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

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

干杯!

1 个答案:

答案 0 :(得分:3)

我没有对此进行过测试,但以下可能是您正在寻找的内容:

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

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