Что делать с обратными слешами `\` в url-адресе?

В URL не должно быть обратных слешей \, стандартом разрешён один лишь разделитель, и это прямой слеш /. Если вы работаете на Windows, то наверняка столкнётесь с рядом проблем.

Проблемы начинаются когда в данные попадают пути с каталогами:

images\photo.png
books\amigo.txt

Первое что приходит в голову — это заменить один слеш \ другим /. Пускай в переменной был путь, теперь это адрес. Простое и изящное решение, а главное — оно работает. Работает оно на Windows, и ломает программу на Linux и Mac. Там символ \ разрешён в именах файлов и каталогов, поэтому нельзя заменять все обратные слеши не глядя. Выход из положения есть — ориентируйтесь на значение os.sep.

Если вы сами готовите входные данные, то и есть ещё два варианта. Первый — хранить только названия файлов, но не пути целиком. Вариант второй — во всех путях использовать прямые слеши вместо обратных, даже несмотря на то, что это Windows. Это сработает, потому что: Slash / is recognized as a directory separator by the MS-DOS and Windows command-line.


Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.