Я пытаюсь преобразовать неправильные пути без учета регистра в правильные пути с учетом регистра.
Учитывая такой путь, как ./cAsE/SeNsItIvE
, как я могу найти правильный путь с помощью этой формы? ./CaSe/sEnSiTiVe
?
Пример не означает, что я ищу полную инверсию - т.е. .\DIR\file
должен преобразоваться в ./dir/file
, если ./dir/file
существует в системе.
Очевидно, я играл с glob и не могу найти правила, чтобы справиться с этим.
Я никого не утомлю своими тусклыми усилиями.
Спасибо!
Обновлено:
Я закончил тем, что создал базу данных всех допустимых путей, а затем сопоставил вводимые пути с шаблоном без учета регистра.
Интересно, есть ли лучший способ сделать это:
#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
Кроме того, вам просто нужно совпадение без учета регистра (например, машина с Windows) или закрытие совпадения? В Linux, если бы существовали и a/b/c
, и A/B/c
, соответствовали бы вы обоим?
Вы можете сравнить два пути в нижнем регистре, и если они совпадают, остальное вам известно.
Я хочу имитировать разрешение пути Windows на машине * nix. У меня есть пути Windows на машине * nix, которые не работают из-за неправильного регистра. Я хочу превратить этот неправильный путь в рабочий на машине * nix. Мне не нужно беспокоиться о столкновениях.
«Я никого не утомлю своими тусклыми усилиями». - Я думаю, что лучше, если вы все равно дадите свои попытки, это улучшит ваш вопрос и облегчит помощь.