我的目标是列出zip归档文件内特定子目录中包含的所有文件。
os.listdir(target_dir)
引发FileNotFoundError
,并zfile.namelist()
仅列出所有目录中的所有文件。
有任何想法吗?
请尝试以下方法:
files = list(filter(lambda f: f.startswith("subdir"), zfile.namelist()))
print(files)
说明:filter
过滤器通过提供的名单zfile.namelist()
上lambda
被检查文件名是否与“子目录”开始。
该filter
函数不返回列表,而是返回一个过滤器对象(生成器),因此我们需要将其转换为列表。
您还可以使用以下行进行相同操作,但使用列表推导:
files = [f for f in zfile.namelist() if f.startswith("subdir")]
编辑:正如advance512指出的:“此解决方案的问题在于,它还会在您正在检查的子目录内的子目录中返回文件。”:
files = [f for f in zfile.namelist() if f.startswith("subdir") and f.count("/") == 1]
这将不会返回子目录中的任何文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句