Python, добавить завершающую косую черту в строку каталога, независимо от ОС

114

Как я могу добавить завершающую косую черту ( /для * nix, \для win32) в строку каталога, если хвостовой косой черты еще нет? Спасибо!

охо
источник
8
Вам следует использовать os.pathмодуль ( docs.python.org/library/os.path.html ) вместо непосредственного управления строками. Используется os.path.joinдля объединения компонентов пути.
kennytm
2
Спасибо Тиму за напоминание, после прочтения документа я думаю, что ответ на мой настоящий вопрос - os.path.join (папка, имя файла), и мне вообще не нужно беспокоиться о косой черте. чувак, я буду любить питона ;-)
охо
2
Вот почему я спросил - не делайте этого самостоятельно, используйте os.path.joinи позвольте стандартной библиотеке определить правильный разделитель путей.
Тим Пицкер
2
@ S.Lott Я не считаю это «плохим». вопрос сам по себе является правильным вопросом. это лишь часть более крупного (можно сказать реального) вопроса.
ohho
6
Однако в зависимости от того, что вы делаете, этот вопрос все еще может представлять интерес. Например, если вы используете Python для ввода данных в другую программу, у вас может быть случай, когда для аргумента нужен путь с косой чертой. Это может быть вне вашего контроля; и является вполне допустимым вариантом использования для ответа Марко ниже.
Крис Кричо

Ответы:

180

os.path.join(path, '') добавит завершающую косую черту, если ее еще нет.

Вы можете сделать os.path.join(path, '', '')или, os.path.join(path_with_a_trailing_slash, '')и вы все равно получите только одну косую черту в конце.

Стивен Т. Снайдер
источник
2
Также добавляет косую черту, когда pathэто файл, а не каталог. Это немного неудобно.
Мартин
27

Поскольку вы хотите связать каталог и имя файла, используйте

os.path.join(directory, filename)

Если вы хотите избавиться от .\..\..\blah\путей, используйте

os.path.join(os.path.normpath(directory), filename)
Тим Пицкер
источник
11

Вы можете сделать это вручную:

path = ...

import os
if not path.endswith(os.path.sep):
    path += os.path.sep

Однако обычно он намного чище в использовании os.path.join.

Макс Шавабке
источник
-1

Вы можете использовать что-то вроде этого:

os.path.normcase(path)
    Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts forward slashes to backward slashes.

В противном случае вы могли бы поискать что-нибудь еще на этой странице

Bloeper
источник