请帮助我找到实现os.path的方法.发行子路径(a,b)

你好,
我正在尝试实现一个函数,该函数返回路径是否为
另一个的子(例如/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/

标签: python

添加新评论