import os
ROOT = r'D:\1LIBS\1delayLM' # если запускаешь из самой папки — можно оставить '.'
# ВАЖНО: os.rename закомментирован, ничего не изменится
ENCODING_PAIRS = [
('cp1257', 'cp866'), # ĭ -> Л (главный кандидат)
('cp1252', 'cp866'), # Â -> В
('cp1252', 'cp1251'), # Â -> В (альтернатива)
('latin-1', 'cp866'),
('latin-1', 'cp1251'),
('cp1257', 'cp1251'),
('cp1251', 'cp866'),
('cp866', 'cp1251'),
]
def try_fix(name):
for src, dst in ENCODING_PAIRS:
try:
fixed = name.encode(src).decode(dst)
if fixed != name:
return src, dst, fixed
except (UnicodeEncodeError, UnicodeDecodeError):
continue
return None
for dirpath, dirnames, filenames in os.walk(ROOT):
for n in dirnames + filenames:
r = try_fix(n)
if r:
src, dst, fixed = r
print(f'{n!r} [{src}->{dst}] => {fixed!r}')
else:
print(f'{n!r} -- не подобралось')