如何识别 ZipFile 中的项目是否为目录

How to identify whether an item inside ZipFile is a directory

考虑一个 zip 文件,其中包含一个目录,其中包含一些文件,例如sample.zip 的内容是:

Archive:  ziptest.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  03-28-2022 21:00   ziptest/
        0  03-28-2022 21:00   ziptest/folderA/
        0  03-28-2022 21:00   ziptest/folderB/
        0  03-28-2022 21:00   ziptest/folderA/file1.txt
        0  03-28-2022 21:00   ziptest/folderB/file2.txt
---------                     -------
        0                     5 files

如何区分 Python 中的文件和目录? (可能忽略this

from zipfile import ZipFile

archive = ZipFile("ziptest.zip")
print(archive.namelist())
# ['ziptest/', 'ziptest/folderA/', 'ziptest/folderB/', 'ziptest/folderA/file1.txt', 'ziptest/folderB/file2.txt']

一种方法是假设文件是​​具有扩展名的文件,但情况并非总是如此。我尝试将 .namelist() 的元素包装在 pathlib.Path 中,但这不起作用。此外,可以查看文件大小来区分文件,但这会在空文件上给出错误信号。

测试文件状态的唯一方法是检查“/”是否在元素末尾吗?

根据documentation

from zipfile import ZipFile, Path
archive = ZipFile('ZIP_PATH')
for name in archive.namelist():
    print(Path(root= archive, at= name).is_dir())