我有两组路径,第一组可能有 5000 个文件,第二组可能有 10000 个文件。第一组包含在第二组中。我需要检查第二组中的任何条目是否是第一组中任何条目的子目录(即,它是否是第一组中另一个目录中的子目录或文件)。还有一些额外的要求:
- 不对文件系统进行任何操作,应该只对路径字符串进行操作(如果需要处理符号链接除外)。
- 平台无关(例如大写/小写,不同的分隔符)
- 对于表达相同路径的不同方式,它应该是稳健的。
- 它应该同时处理符号链接及其目标。
- 有些路径是绝对的,有些是相对的。
- 这应该尽可能快!
我正在考虑同时获取os.path.abspath()
和os.path.realpath()
获取每个条目,然后将它们与os.path.commonpath([parent]) == os.path.commonpath([parent, child])
. 不过,我想不出一个跑得这么快的好方法。或者直接比较字符串是否安全?这会让事情变得容易得多。谢谢!
编辑:我对平台独立性有点不清楚。它应该适用于所有平台,但不会混合使用例如 Windows 和 Unix 风格的路径。