Почему в этом случае os.path.join () не работает? - PullRequest
283 голосов
/ 22 декабря 2009

Приведенный ниже код не присоединится, когда при отладке команда сохраняет не весь путь, а только последнюю запись.

os.path.join('/home/build/test/sandboxes/', todaystr, '/new_sandbox/')

Когда я проверяю это, он сохраняет только часть кода /new_sandbox/.

Ответы [ 11 ]

0 голосов
/ 01 июня 2016

Обратите внимание, что подобная проблема может укусить вас, если вы используете os.path.join() для включения расширения, которое уже содержит точку, что происходит автоматически при использовании os.path.splitext(). В этом примере:

components = os.path.splitext(filename)
prefix = components[0]
extension = components[1]
return os.path.join("avatars", instance.username, prefix, extension)

Даже если extension может быть .jpg, вы получите папку с именем "foobar", а не файл с именем "foobar.jpg". Для предотвращения этого вам нужно добавить расширение отдельно:

return os.path.join("avatars", instance.username, prefix) + extension
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...