Python, додайте косую косу рису в рядок каталогів, незалежно від цього


114

Як я можу додати кінцеву косу рису ( /для * nix, \для win32) до рядка каталогу, якщо косої косої лінії ще немає? Дякую!


8
Ви повинні використовувати os.pathмодуль ( docs.python.org/library/os.path.html ), а не безпосередньо маніпулювати рядками. Використовуйте os.path.joinдля об'єднання компонентів шляху.
kennytm

2
дякую Тіму, що нагадав, прочитавши документ, я думаю, що відповідь на моє справжнє запитання - os.path.join (папка, ім'я файлу), і мені зовсім не потрібно турбуватися про косу рису. чоловіче, я буду любити python ;-)
ой

2
Ось чому я попросив - не робіть цього самостійно, використовуйте os.path.joinта дозвольте стандартній бібліотеці з'ясувати правильний роздільник шляху.
Тім Піцкер

2
@ S.Lott Я не вважаю це "поганим". питання є правильним питанням саме по собі. це лише частина більшого (можна сказати, реального) питання.
ой

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.

В іншому випадку ви можете шукати щось інше на цій сторінці

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.