← Все вопросы
Как собрать путь к файлу, чтобы работало и на Windows, и на Linux?
12
Склеиваю путь руками строкой через слэш: folder + '/' + filename. На винде иногда ломается из-за обратных слэшей и вообще выглядит костыльно. Как делать правильно и кроссплатформенно?
2 ответа
23
Не клей слэши руками — для этого есть os.path.join, он сам подставит правильный разделитель под текущую ОС:
import os
path = os.path.join('data', 'logs', 'app.txt')
# Linux: data/logs/app.txt
# Windows: data\\logs\\app.txt
Современная альтернатива — pathlib, где пути собираются через оператор /:
from pathlib import Path
path = Path('data') / 'logs' / 'app.txt'
Оба варианта кроссплатформенны. pathlib сейчас считается более удобным: у объекта Path сразу есть .exists(), .name, .suffix и т.п.
6
os.path.join(a, b) вместо ручной склейки.
Ваш ответ
Войдите, чтобы ответить на вопрос.