【问题标题】:How do I know an item is a directory while looping over zipfile in Python?在 Python 中循环 zipfile 时,我如何知道一个项目是一个目录?
【发布时间】:2012-02-14 14:25:16
【问题描述】:

做这样的事情:

from zipfile import ZipFile

#open zip file
zipfile = ZipFile('Photo.zip')

#iterate zip contents
for zipinfo in zipfile.filelist:
    #do something
    filepath, filename = path.split(zipinfo.filename)

我如何知道zipinfo 是文件还是目录?

感谢您的支持。

【问题讨论】:

    标签: python zip zipfile


    【解决方案1】:

    也许这是正确的方法:

    is_dir = lambda zipinfo: zipinfo.filename.endswith('/')
    

    【讨论】:

    • 我相信目录分隔符在 zip 文件中总是规范化为/,无论是在哪个平台上创建的。
    • @Greg:我怀疑它是否依赖于 zip 打开但没有 Windows 框来测试它的平台。
    • 不,没有变化。 zip 文件中的路径分隔符始终为/,无论它在哪个平台上打开。
    • 仅供参考,在野外发现的 zip 文件中,并不总是有一个目录成员,该目录中有文件。有时只存在文件成员,而包含目录没有单独的成员。
    • 哦,这个模块真是太棒了。如果你 print() 一个 ZipInfo,它会显示一个“文件模式”。没有这样的成员。
    【解决方案2】:

    从 Python 3.6 开始,有一个 ZipInfo.is_dir() 方法。

    with zipfile.ZipFile(zip_file) as archive:
        for file in archive.namelist():
            file_info = archive.getinfo(file)
            if file_info.is_dir():
                # do something
    

    See the Python 3.6 docs了解详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-04
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多