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.