Я ищу независимое от платформы решение. В Linux все работает, потому что os.walk
уже возвращает пути POSIX. Однако, если я нахожусь в Windows, я мог бы получить следующие два пути:
abspath = "/x/y/z" # given path for a remote server which uses POSIX paths
relpath = "a\\b\\c" # acquired from local file system via os.walk, so it uses slash or backslash depending on the platform
Желаемый результат объединенного пути для этого примера:
'/x/y/z/a/b/c'
Однако, естественно, использование posixpath.join
приводит к:
>>> posixpath.join(abspath, relpath)
'/x/y/z/a\\b\\c'
Итак, когда я нахожусь в Windows и у меня есть относительный путь, такой как a\\b\\c
, я думаю, что имеет смысл сначала преобразовать его в относительный путь POSIX a/b/c
, так что я могу потом использовать posixpath.join
?
Однако я не считаю, что просто заменять каждый обратный слеш на слеш - это лучшая практика - или это так? Я не смог найти функцию, которая обеспечивает такое преобразование.