我可以看到关于zipfile的一般性问题,不确定我是否遗漏了关于我的特定问题的一些内容(但我觉得这是一个显而易见的问题,如果它存在的话,我很抱歉)
我有一个包含多个目录的zip文件,我想在zipfile中cd
,然后处理这些文件
我有以下代码:
with ZipFile(input_path, 'r') as zip:
for f in zip.namelist():
zinfo = zip.getinfo(f)
if(zinfo.is_dir()):
print(f)
其中打印:
dir1/
dir1/dir2
dir1/dir2/dir3
我现在只想从cd
到dir3
处理文件,而不解压缩整个zipfile
有人能告诉我做这个的代码吗
更新1:根据建议,我尝试了以下方法:
with ZipFile(input_path, 'r') as zip:
for f in zip.namelist():
zinfo = zip.getinfo(f)
if(zinfo.is_dir()):
if zinfo.filename == 'dir1/dir2/dir3':
zip2 = zip.open(zip.path('dir1/dir2/dir3'))
for f2 in zip2:
zinfo2 = zip.getinfo(f2)
print(zinfo2)
没有错误,但没有打印任何内容(但目录中肯定有文件,当我手动解包zip时可以看到这一点)
据我所知,你不能在zipfile中
cd
。但是,这里有一种方法可以在一个目录中找到一个子目录,并遍历其中的文件。下面的代码使用名为find_target_dir()
的递归帮助函数来定位目标子文件夹,然后迭代并打印其中文件的名称带有测试存档文件的示例输出,该文件具有与您的问题中描述的子目录类似的子目录,此外,为了测试目的,我在每个级别添加了一个或多个常规文件
下面的列表显示了
test_archive.zip
文件中的内容:以下是脚本的打印输出:
相关问题 更多 >
编程相关推荐