Python'da PATH ortam değişkeni ayırıcısı nasıl alınır?


156

Yürütülebilir bir arama yolunda olduğu gibi birden çok dizinin birleştirilmesi gerektiğinde, işletim sistemine bağımlı bir ayırıcı karakter vardır. Windows için ';', Linux için ':'. Python'da hangi karakterin bölüneceğini öğrenmenin bir yolu var mı?

Bu soruya ilişkin tartışmalarda python kullanarak python yolumu nasıl bulabilirim? , bunu yapmanız önerilir os.sep. Bu cevap yanlıştır, çünkü bir dizin veya dosya adının bileşenleri için ayırıcıdır ve '\\'veya 'ye eşittir '/'.

Yanıtlar:


220

219
Benim gibi, bu sorunun metnini okumadıysanız ve sadece başlığa geçtiyseniz, bunun bir dosya sistemi yolunun öğelerini ayıran karakter olduğunu düşüneceksiniz (Linux ve MacOSX'ta eğik çizgi, Windows'ta ters eğik çizgi). Bu, çalıştırılabilir komutları bulmak için kullanılan bir kabuk PATH öğelerini ayıran karakter değildir . os.sepveya os.path.sepdosya sistemi yolları için ihtiyacınız olan şeydir.
Perry

71
os.pathsepolduğu :ya ;da os.path.sepolduğu \\ veya /- şok edici kötü seçilmiş bazen Python isimler bana saldırıyorsun. Bu .çok büyük bir fark yaratır.
ArtOfWarfare

1
@Perry soruyu düzenledim. Umarım benim düzenleme karışıklığı temizler (bu sorunun bir "dosya sistemi yolu" yerine "PATH ortam değişkeni" hakkında sorduğunu belirtti).
Trevor Boyd Smith

Yani orada os.sepve os.path.sepeşit olan, hem de os.pathsepve os.path.pathsephangi zamanda eşittir. Neden bunu yapsınlar?
BallpointBen


12

Biraz daha açık yapmak (Benim gibi python yeni başlayanlar için)

import os
print(os.pathsep)

4

Tamam, yani:

  • os.pathsepyani ;ve bir ayırıcı ki bu PATHortam değişkeni;
  • os.path.sepyani /Unix / Linux ve \yol bileşenleri arasındaki bir ayırıcı olan Windows içinde.

Benzerlik bir karışıklık kaynağıdır.


Soruyu bile okudun mu? farklı bir sorunun os.path.sepcevabıdır .
Mark Ransom

Haklısın, teşekkürler! Benim karışıklığım aslında '\' ve '/' sisteme özgü ayırıcıyı (os.path.sep) aradığımdan, bu sayfanın arama sonuçlarından biri olarak önerildiğinden geldi.
DVV

1

Bu, çalışma dizininiz / özel klasörünüz için örnek bir yoldur -

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

Linux için Çıktı

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

Windows için Çıktı

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.