Як отримати роздільник змінної середовища PATH в Python?


156

Коли кілька каталогів потрібно об'єднати, як у виконуваному шляху пошуку, існує роздільний символ, що залежить від ос. Для Windows це - ';'для Linux це ':'. Чи є спосіб у Python отримати, на якого персонажа поділитися?

В обговоренні цього питання Як дізнатися шлях до python за допомогою python? , пропонується, що os.sepце зробить. Ця відповідь є неправильною, оскільки вона є роздільником для компонентів каталогу або імені файлу і прирівнюється до '\\'або '/'.

Відповіді:


220

219
Якщо ви, як і я, не прочитали основу цього питання і просто перейшли за заголовком, ви подумаєте, що це символ, який розділяє елементи шляху до файлової системи (косою рисою на Linux та MacOSX, зворотній косою рисою в Windows). Це не той персонаж, який розділяє елементи оболонки PATH, яка використовується для пошуку виконуваних команд. os.sepабо os.path.sepце те, що вам потрібно для шляхів файлової системи.
Перрі

71
os.pathsepє :або ;поки os.path.sepє \\ або /- іноді імена в Python вважають мене шокуючою погано обраною. Це .робить занадто великою різницю.
ArtOfWarfare

1
@Perry я редагував питання. сподіваюся, моя редакція очищує плутанину (я вказав, що це питання задає питання про "змінну середовища PATH" замість "шлях файлової системи").
Тревор Бойд Сміт

Так є os.sepі os.path.sep, які рівні, як os.pathsepі os.path.pathsepякі також рівні. Навіщо їм це робити?
BallpointBen


12

Зробити це трохи чіткіше (для новичок, які подобаються пітону)

import os
print(os.pathsep)

4

Добре, значить, є:

  • os.pathsepщо є, ;і який є роздільником PATHзмінної середовища;
  • os.path.sepтобто /в Unix / Linux і \в Windows, який є роздільником між компонентами шляху.

Подібність викликає плутанину.


Ви навіть читали запитання? os.path.sepце відповідь на інше питання.
Марк Рансом

Ви маєте рацію, дякую! Моя плутанина виникла з того факту, що насправді я шукав специфічний для системи розділення '\' та '/' (який є os.path.sep), тоді як ця сторінка була запропонована як один із результатів пошуку.
DVV

1

Це зразок шляху для вашого робочого каталогу / конкретної папки -

 import os
 my = os.path.sep+ "testImages" + os.path.sep + "imageHidden.png"
 print(my)

Вихід для Linux-

/home/*******/Desktop/folder/PlayWithPy/src/testImages/imageHidden.png

Вихід для Windows-

C:\\Users\\Administrator\\Desktop\\folder\\tests\\testImages\\imageHidden.png

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