使用 Python 检查 zip 文件中是否存在目录

2023-12-28

最初我想使用os.path.isdir但我认为这不适用于 zip 文件。有没有办法查看 zip 文件并验证该目录是否存在?我想阻止使用unzip -l "$@"尽可能多,但如果这是唯一的解决方案,那么我想我别无选择。


只需检查文件名末尾带有“/”的文件即可。

import zipfile

def isdir(z, name):
    return any(x.startswith("%s/" % name.rstrip("/")) for x in z.namelist())

f = zipfile.ZipFile("sample.zip", "r")
print isdir(f, "a")
print isdir(f, "a/b")
print isdir(f, "a/X")

你用这条线

any(x.startswith("%s/" % name.rstrip("/")) for x in z.namelist())

因为存档可能不明确包含目录;只是一个带有目录名的路径。

执行结果:

$ mkdir -p a/b/c/d
$ touch a/X
$ zip -r sample.zip a
adding: a/ (stored 0%)
adding: a/X (stored 0%)
adding: a/b/ (stored 0%)
adding: a/b/c/ (stored 0%)
adding: a/b/c/d/ (stored 0%)

$ python z.py
True
True
False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 检查 zip 文件中是否存在目录 的相关文章

  • 使用请求验证 SSL 证书

    我正在尝试验证 SSL 但它不起作用 我在浏览器上访问了我想要访问的机密网站 在 Chrome 上 我单击了储物柜 gt 证书 gt 详细信息 gt 复制到文件 gt base64 gt cert cer 我的代码是 test reques
  • 如何使用 cython 编译扩展?

    我正在尝试从示例页面编译一个简单的 cython 扩展here http docs cython org src userguide tutorial html在我安装了 Python 2 6 64 位版本的 Windows 7 64 位计
  • 在 Pandas 中按日期获取有效合约

    我在检测 pandas DataFrame 中的活动合约方面遇到了一些困难 假设每一行都是一个协商 对于每一行 我有两列 initial date 和 end date 我想知道的是按日期划分的活跃合约数量 到目前为止我做了一个非常低效的方
  • 如何在Python中循环并存储自变量中的值

    我对 python 很陌生 所以这听起来可能很愚蠢 我进行了搜索 但没有找到解决方案 我在 python 中有一个名为 ExcRng 的函数 我可以对该函数执行什么样的 for 循环 以便将值存储在独立变量中 我不想将它们存储在列表中 而是
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • 为什么 Python 中的“pip install”会引发语法错误?

    我正在尝试使用 pip 安装软件包 我试着跑pip install从Python shell 但我得到了SyntaxError 为什么我会收到此错误 如何使用 pip 安装软件包 gt gt gt pip install selenium
  • 如何从 Dockerfile 安装 Python 3.7 和 Pip

    我正在尝试构建基于 Ubuntu 18 04 的自定义 Docker 映像 Ubuntu 预装了 Python 3 6 但我想 1 安装 Python 3 7 2 将其设置为默认 Python 版本 这样就可以使用python代替pytho
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • 在可编辑的QSqlQueryModel中实现setEditStrategy

    这是后续这个问题 https stackoverflow com questions 49752388 editable qtableview of complex sql query 在那里 我们创建了 QSqlQueryModel 的可
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • 将一个列表的元素除以另一个列表的元素

    我有两个清单 比如说 a 10 20 30 40 50 60 b 30 70 110 正如你所看到的 列表 b 由一个列表的元素总和组成 其中 window 2 b 0 a 0 a 1 10 20 30 etc 如何获得另一个列表 该列表由
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 检查字符串是否只有字母和空格 - Python

    试图让 python 返回一个字符串仅包含字母和空格 string input Enter a string if all x isalpha and x isspace for x in string print Only alphabe
  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • Doctrine2 中 JOIN ON 和 JOIN WITH 有什么区别?

    Doctrine2 中 JOIN ON 和 JOIN WITH 有什么区别 我在手册中找不到任何相关信息 ON替换原来的连接条件 WITH为其添加一个条件 Example Album OneToMany gt Track Case One
  • 子图日期时间 X 轴刻度未按预期工作

    我正在尝试绘制许多图 以下是数据组织方式的示例 我的目的是使用谷歌分析数据构建一系列几小时或几天 比如一周 7 天 或一天 24 小时 的子图 我的索引是日期时间对象 这是当轴正确完成时单个图的外观示例 from datetime impo
  • 了解 Traceview

    我想了解跟踪视图是如何工作的 我尝试使用traceview 分析一种方法 但有一个疑问 我已附上 trace 的快照 它表示大部分时间由蓝色标记的 顶级 占用 但没有更多信息 这个方法何时执行或者执行什么功能 谁能向我解释一下为什么它花费这
  • 在scala中调用akka actor的方法

    我有一个演员定义如下 class nodeActor ID String extends Actor 其中包含一个方法 用于在启动之前设置 actor def addRef actor ActorRef 我这样实例化这个演员 val nod
  • Junit ant 任务 - 未找到 JUnitTask

    我正在尝试从我的 ant build xml 文件运行 Junit 测试 我读here http ant apache org manual Tasks junit html您可以使用 junit jar 文件 而不是使用位于 ant ho
  • 如何消除 Flutter 中两个容器之间的空间?

    我在 Column 小部件内有两个高度 250 的容器 这两个容器小部件之间没有任何其他小部件 但我仍然可以看到两个容器之间的空间很小 这是我的代码 import package flutter material dart void mai
  • 什么是spark.driver.maxResultSize?

    The ref http spark apache org docs latest configuration html says 每个分区的所有分区的序列化结果总大小的限制 激发行动 例如收集 应至少为 1M 或 0 无限 如果总大小超过
  • 如何以编程方式将 Excel 数据导入到 Access 表中?

    我已经阅读了一些相关主题 但仍然留下了这个问题 我想在 Access 数据库应用程序中编写一个函数 以编程方式导入从前两行 标题和单位分隔符 之前开始的 Excel 数据 我希望完成以下任务 能够动态选择我要导入的 Excel 文件 可能使
  • 选择nodeValue但排除子元素

    假设我有这个代码 p Hello this is a description a href Click here for more a p 如何选择的nodeValuep但排除a它的内容是什么 我当前的代码 result xpath gt
  • 步骤中未找到此类 DSL 方法“管道”

    我在 Jenkins 中的声明性管道脚本中不断收到此错误 No such DSL method pipeline found among steps 我的脚本是这样的 pipeline agent any stages stage Exam
  • 谷歌存储桶文件链接可公开访问,即使不公开?

    我正在玩谷歌桶 该存储桶不是公共的 这些文件也不公开 我上传 csv 文件后 我点击它 它在谷歌浏览器的浏览器中显示了带有一个很长的复杂 url 链接的文件 现在 如果我使用该链接并在另一个没有登录谷歌帐户的浏览器 例如 IE 中打开 我就
  • C# - 应用程序显示函数之间的所有依赖关系?

    是否有某种应用程序可以分析源代码并以图形方式显示函数之间的所有连接 我需要它来处理我正在处理的遗留代码 它很大 功能齐全 而且写得很糟糕 NDepend http www ndepend com 正是这样做以及更多其他事情 代码指标
  • 汇编程序文件 (*.asm) 的 gedit 语法突出显示

    默认情况下 gedit 不进行语法高亮显示 asm files 如何添加对此语言的支持 以下步骤应该足够了 wget http www carminebenedetto net downloads asm intel lang sudo c
  • 无法使用 PowerMock 模拟 java.lang.System#exit(int) 方法

    我的应用程序有一个流程 最后是方法System exit int 正在被呼叫 我正在尝试通过使用 TestNG 运行测试来测试此流程 然而 在运行测试时 尽管测试已完成 但我收到了这条奇怪的消息 只是为了找到根本原因 我删除了System
  • 在 AngularJS 中使用 $controller 时如何消除缩小错误

    angular module mainApp controller dynamicRouteController scope controller routeParams function scope controller routePar
  • 如何在mathematica中重载Times和Plus进行矩阵乘法

    我想要超载Times and Plus例如 对于mathematica中的矩阵乘法 让Times be BitAnd 并且加上是BitOr 然后进行矩阵乘法 无论如何 有没有一种简单的方法可以做到这一点 而无需重写我自己的矩阵乘法 Than
  • Flask 多重处理

    我正在尝试开发一个小型应用程序 它基本上会根据用户提供或请求的数据集绘制一些图表 process order 函数应该并发运行不同的数据集 由于某种原因 我只得到第一张图 而不是第二张和连续的图表 我与不同的用户打开了不同的浏览器会话 得到
  • 如何在linq queryable的表达式树中调用sql标量函数?

    我正在为 Iqueryable 创建 lambda 表达式以从集合中获取值 但我想将该值转换为其他数据类型 例如 int 或decimal 因此 由于我无法将 C 转换与 Iqueryable 一起使用 因此我在 sql 中创建了用户定义的
  • 如何修复 SweetAlert2 中奇怪的成功和错误图标?

    因此一月份 SweetAlert2 100 正常 成功和错误图标上没有错误 但二月之后 图标看起来很奇怪 动画也很糟糕 我尝试更新 CDN 因为 2 天前 SweetAlert2 更新了 但问题仍然没有解决 也许你可以帮助我 这是图像 成功
  • 使用 Python 检查 zip 文件中是否存在目录

    最初我想使用os path isdir但我认为这不适用于 zip 文件 有没有办法查看 zip 文件并验证该目录是否存在 我想阻止使用unzip l 尽可能多 但如果这是唯一的解决方案 那么我想我别无选择 只需检查文件名末尾带有 的文件即可