如何忽略路径末尾部分 校验路径是否属于允许的目录列表
路径归属校验解决方案
你可以通过Python内置的os.path模块标准化路径格式、提取父目录后完成匹配,不需要手动切割字符串处理边界问题,适配不同操作系统的路径规则。
首先导入依赖模块,沿用你的示例参数:
import os path1 = "Folder/module/comp1/test.txt" path_list = ["module/comp1", "module/comp2/", "module/comp3"]
步骤1:预处理允许的目录列表
统一移除所有目录末尾的斜杠、标准化路径格式,避免因格式不一致导致匹配失败:
processed_allowed_dirs = [os.path.normpath(p) for p in path_list]
步骤2:提取带文件路径的父目录
# 提取路径的父目录并做标准化处理 parent_dir = os.path.normpath(os.path.dirname(path1))
步骤3:完成路径匹配
根据你的实际业务规则选择对应的匹配逻辑:
- 场景1:允许的目录为父目录的后缀匹配(适配你给出的示例场景)
示例中父目录为Folder/module/comp1,允许目录module/comp1是其后缀,匹配结果为真is_allowed = any( parent_dir.endswith(os.sep + allowed) or parent_dir == allowed for allowed in processed_allowed_dirs ) - 场景2:所有路径均相对于固定项目根目录
可以统一转成相对根目录的路径后做前缀匹配,避免不同层级同名字段误匹配:# 替换为你的实际项目根目录 project_root = "/path/to/your/project" relative_parent = os.path.normpath(os.path.relpath(parent_dir, project_root)) is_allowed = any( relative_parent.startswith(allowed + os.sep) or relative_parent == allowed for allowed in processed_allowed_dirs )
最后输出is_allowed即可得到校验结果。
内容的提问来源于stack exchange,提问作者Newone90
相关产品推荐
相关产品推荐

