我怎样才能知道一个pathlib.path()是否是另一个目录的子目录?
我可以使用pathlib.PurePath()的字符串,但只有在我有完整路径的情况下才能工作。
with zipfile.ZipFile(fname, 'w') as zip:
for f in files:
myrelroot = relroot # relative root for this zipfile
if f"{pathlib.PurePath(relroot)}" not in f"{pathlib.PurePath(f)}":
myrelroot = None # outside of zipfile so we do not get ..\\..
try:
zip.write(f, arcname=os.path.relpath(f, myrelroot))
except FileNotFoundError as e:
log.warning(f"file '{f}' not found: {e}")
else:
log.info(f"adding {f} to {fname}")
2条答案
按热度按时间dm7nw8vv1#
你可以用
resolve()
把它们转换成绝对路径,然后比较parts
,这在linux和windows上都有效。或
6ljaweal2#
可以使用pathlib方法
is_relative_to
和relative_to
来确定一个路径是否包含在另一个路径中,以及相对路径是什么。然后,您可以将代码重新构造为如下形式: