你好,
我正在尝试实现一个函数,该函数返回路径是否为
另一个的子(例如/a/b/c是/a/b)的子路径.
我写了这个功能,显然看起来很好:
导入操作系统
DEF ISSUBPATH(PATH1,PATH2):
"""如果路径1是路径的子路径2.""".
如果path1 ==路径2:
返回false
x1 = path1.split(OS.SEP)
x2 = path2.split(os.sep)
返回x1 [:len(x2)] == x2
....但是,如果我使用" issubpath('c:\\ dir','c:\\')",它将返回false.
一点帮助将不胜感激.
提前致谢.
--- giampaolo http://code.google.com/p/pyftpdlib/
# 回答1
在9月11日,5:40*下午," Giampaolo Rodola'"
那是因为:
['c:','dir']
['C:', '']
所以你可以写一些类似的东西
X1 = PATH1.RSTRIP(OS.SEP).split(OS.SEP)
x2 = path2.rstrip(os.sep).split(os.sep)
在您的功能中
Hth
- -
Arnaud
# 回答2
Giampaolo Rodola'Schrieb:
任何原因
OS.Path.normpath(a).startswith(os.normpath(b))不做问题吗?
diez
# 回答3
Diez B. Roggisch写道:
除了微不足道的类型,您的意思是吗?这取决于" c:\ foo"是否
是否应该将其视为" C:\ foobar"的子同心.我可能会去
(也未经测试):
DEF ISSUBPATH(A,B):
Def FixPath(P):
返回OS.Path.normpath(P) + OS.SEP
返回fixpath(a).startswith(fixpath(b))
# 回答4
在9月11日,8:04*PM,Arnaud Delobelle
那是因为:
['c:','dir']
['C:', '']
所以你可以写一些类似的东西
* * x1 = path1.rstrip(os.sep).split(os.sep)
* * x2 = path2.rstrip(os.sep).split(os.sep)
在您的功能中
Hth
- -
Arnaud
谢谢,它似乎很好.
--- giampaolo http://code.google.com/p/pyftpdlib/