Image

Image_winnie wrote in Imageru_python

Как узнать относительный путь от одной директории до другой?

Столкнулся с такой задачей, когда написал

for path, dirs, files in os.walk(my_dir):
   for f in files:
       ....


и понял, что мне нужен путь от my_dir до os.path.join(path, f).
Можно конечно чисто по длине строки отрезать, что-то вроде этого (неэффективно, для иллюстрации) -

rel_path = path[len(my_dir):]
while rel_path and rel_path[0] in ['/', '\\']:
    rel_path = rel_path[1:]


или заранее отрезать слеши на конце my_dir, но всё это раздражает, вот такое ручное вырезание уже склееного внутри os.walk, когда уже привык что "батарейки включены".
Как простым образом решить проблему?

upd: простой хакерский способ:
my_dir += '/'
дальше благодаря особенностям работы path[len(my_dir):] можно использовать без всяких if. Но это неочевидно для читающего код, поэтому не pythonish :) И использует недокуметированые фичи os.walk.