Python'da ana dizine nasıl ulaşılır?


919

Mevcut oturum açmış kullanıcının ana dizininin konumunu almam gerekiyor. Şu anda Linux'ta aşağıdakileri kullanıyorum:

os.getenv("HOME")

Ancak bu, Windows'ta çalışmaz. Bunu yapmanın çapraz platform doğru yolu nedir?


1
Bu, python kullanarak gerçek kullanıcı ana dizini nasıl bulunur'un bir kopyası olarak işaretlendi , ancak bu yanıt Python 3'te çalıştığı ve eski yanıt çalışmadığı için yeniden açmaya oy verdim.
Dour Yüksek Arch

Yanıtlar:


1640

Os.path.expanduser'ı kullanmak istiyorsunuz .
Bu, tüm platformlarda çalışmasını sağlayacaktır:

from os.path import expanduser
home = expanduser("~")

Üzerinde iseniz Python 3.5+ kullanabilirsiniz pathlib.Path.home () :

from pathlib import Path
home = str(Path.home())

47
kullanıcı pencerelerde bir etki alanında oturum ve aktif dizindeki profil giriş klasörü kümesi vardır eğer o zaman bu yerine yerel ana dizin bu eşleştirilmiş ağ klasörü bildirir unutulmamalıdır
sütunlarınde

7
pathlib.Path.home()Python3.5 itibaren (edinilebilir docs.python.org/3/library/pathlib.html#pathlib.Path.home )
Ivan De Paz Centeno

9
Bu soruda neden başka kimsenin bahsetmediğini merak ediyorum, ancak başka bir kullanıcının ev dizininin nerede olduğunu bilmeniz gerekiyorsa kullanabilirsiniz os.path.expanduser('~username'). Muhtemelen sadece Linux için geçerlidir.
Maksimum

2
@Dipayan hayır, bu pathlib'in Python 2 arka portu. Python 3 için pathlib doğrudur.
Haystack

2
Sonuç aynı. Genelde pathlib ile çalışıyorsanız, pathlib çözümünü tercih edebilirsiniz (ve çağrısını atlayabilirsiniz str). Yolu dizge olarak istiyorsanız, ikisi de aynı şeyi yapar.
Niklas Mertsch

-16

İşte bir linux yolu cd .. bunun yerine onu kullanmanız gerekirse not: (eğer bir alt dizindeyseniz, o zaman dizine götürür)


4
Bu, önceki dizine geçer. Belki yanlış soruya bakıyorsun?
TheTechRobo36414519

1
Bence OP bir python betiğinde çalışacak bir şey arıyor ve bu komut cwd'nin ana dizinine gidecek, bu da kullanıcılar ana dizini olmayabilir.
Benjamin Goodacre
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.