假设我有这些路径:
/tmp/a
/tmp/abc
/tmp/abc/d/my_file.py
我该如何检查/tmp/abc/d/my_file.py
是否为/tmp/abc
的子路径?我尝试了以下代码:
file_path.startswith(dir_path)
但是对于/tmp/a
目录,它返回True
,而my_file.py
不在其中。
假设我有这些路径:
/tmp/a
/tmp/abc
/tmp/abc/d/my_file.py
我该如何检查/tmp/abc/d/my_file.py
是否为/tmp/abc
的子路径?我尝试了以下代码:
file_path.startswith(dir_path)
但是对于/tmp/a
目录,它返回True
,而my_file.py
不在其中。
尝试这样做:
file_path.startswith(os.path.abspath(dir_path)+os.sep)
你还可以参考这个链接:
如何检查一个目录是否是另一个目录的子目录所以针对你的例子:
>>> '/tmp/abc/d/my_file.py'.startswith(os.path.abspath('/tmp/abc')+os.sep)
True
>>> '/tmp/abc/d/my_file.py'.startswith(os.path.abspath('/tmp/a')+os.sep)
False
file_path.startswith(os.path.abspath(dir_path)+os.sep)
或者file_path == dir_path
。 - Erik Aronestyrealpath
而不是normpath
? - lucidbrot