2024-09-28 17:03:45 发布
网友
最初我想使用os.path.isdir,但我认为这不适用于zip文件。有没有办法查看zip文件并验证该目录是否存在?我想尽量避免使用unzip -l "$@",但如果这是唯一的解决方案,那么我想我别无选择。
os.path.isdir
unzip -l "$@"
您可以使用ZipFile.namelist()检查目录。
import os, zipfile dir = "some/directory/" z = zipfile.ZipFile("myfile.zip") if dir in z.namelist(): print "Found %s!" % dir
您可以使用内置库ZipFile来实现这一点。
import zipfile z = zipfile.ZipFile("file.zip") if "DirName/" in [member.filename for member in z.infolist()]: print("Directory exists in archive")
用Python32测试和功能。
只需在文件名的末尾加上“/”即可。
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
您可以使用ZipFile.namelist()检查目录。
您可以使用内置库ZipFile来实现这一点。
用Python32测试和功能。
只需在文件名的末尾加上“/”即可。
你用这条线
因为归档文件可能不显式地包含目录;只包含具有目录名的路径。
执行结果:
相关问题 更多 >
编程相关推荐