我正在尝试将不正确的不区分大小写的路径转换为正确区分大小写的路径。
给定./cAsE/SeNsItIvE
这样的路径如何找到这种形式的正确路径? ./CaSe/sEnSiTiVe
?
示例并不意味着暗示我正在寻找完全反转 - 即.\DIR\file
如果./dir/file
是系统中存在的./dir/file
,则应解析为#build path database to resolve mispelled paths
paths = []
def build_path_db():
global paths
for filename in iglob('/mdt/**', recursive=True):
abs_path = Path(filename).resolve() # get the absolute path
rel_path = abs_path.relative_to('/mdt') # convert to relative path
paths.append(rel_path)
build_path_db()
#takes string, returns string
def unixify_path(win_path):
pure_win_path = PureWindowsPath(win_path)
#print(pure_win_path)
posix_path = Path(pure_win_path)
#check if path is valid
if posix_path.exists():
print('already correct!')
else:
#print('incorrect!')
posix_path_str = str(posix_path)
#computer case insensitive regex pattern for hunted file
pattern = compile(translate(posix_path_str), IGNORECASE)
#check to see if case inensitive pattern matches actual paths
for path in paths:
if pattern.match(str(path)):
#print('match found! %s ' % path)
return path
。
显然,我一直在使用glob,并且无法找到处理此问题的规则。
我不会因为我的拙劣努力而厌烦任何人。
谢谢!
编辑:
我最终构建了一个包含所有有效路径的数据库,然后将输入的路径与不区分大小写的模式进行匹配。
有兴趣,如果有更好的方法:
JUnit