2012-11-30 13 views
8

Wiem, że używając polecenia getpass.getuser(), mogę uzyskać nazwę użytkownika, ale jak mogę zaimplementować ją automatycznie w poniższym skrypcie? Dlatego chcę, aby Python znalazł nazwę użytkownika, a następnie zaimplementował ją w samym skrypcie.Jak sprawić, aby Python uzyskał nazwę użytkownika w systemie Windows, a następnie zaimplementować ją w skrypcie?

scenariusz: os.path.join('..','Documents and Settings','USERNAME','Desktop'))

(Python wersji 2.7 jest używany)

+1

Po prostu pytasz, jak umieścić t on jest wynikiem 'getpass.getuser()' zamiast napisu '' USERNAME'' w twoim poleceniu? Jeśli tak, to jest to tak proste, jak się wydaje: po prostu napisz 'getpass.getuser()' gdzie napisałeś 'NAZWA_UŻYTKOWNIKA'' i gotowe. – abarnert

+1

Może być duplikatem [tego pytania] (http://stackoverflow.com/questions/842059/is-there-a-portable-way-to-get-turrent-username-in-python) – cfi

Odpowiedz

12

os.getlogin() powrotu czy użytkownik wykonywania operacji, dzięki czemu może być:

path = os.path.join('..','Documents and Settings',os.getlogin(),'Desktop')

lub za pomocą getpass. getuser()

path = os.path.join('..','Documents and Settings',getpass.getuser(),'Desktop')

Jeśli rozumiem, o co prosiłeś.

+0

Dzięki człowiek Pracuje jak czar – KingMak

+5

Problem z tym rozwiązaniem polega na tym, że jesteś zależny od języka. Na przykład: niemiecka nazwa okna "Dokumenty i ustawienia" to "Dokumente und Einstellungen". Następnym punktem jest to, że wprowadzasz kolejne założenie dotyczące katalogu Desktop. Co, jeśli potrzebujesz dostępu do katalogu SendTo? W systemach Windows XP i Windopws 7 mają one całkowicie różne relativ pathes wewnątrz profilu użytkownika. Aby pokonać zależności między językami i wersjami, powinieneś używać takich wywołań jak z win32com. Niech okna zwrócą nazwę katalogu żądanej jednostki użytkownika (Desktop, SendTo, itp.) – f4m8

4

Install win32com, a następnie:

from win32com.shell import shell, shellcon 
print shell.SHGetFolderPath(0, shellcon.CSIDL_DESKTOP, None, 0) 
+1

Um ... to * to * Python. – abarnert

2
>>> os.path.join(os.path.expandvars("%userprofile%"),"Documents and Settings") 
'C:\\Users\\USERNAME\\Documents and Settings' 

powinno wystarczyć ... Myślę, że to jest to, co faktycznie oznaczało tak ..

+0

Cóż, ten skrypt działał zbyt, ale zmienia mój katalog, którego nie chcę, dzięki za publikację – KingMak

+1

co masz na myśli, że zmienił twój katalog? –

22

os.getlogin() nie istnieje dla mnie. Miałem jednak sukces z os.getenv('username').

+0

To jest jedyny sposób, aby go uruchomić w IronPython, który znalazłem. – bastula

0

uzyskać bieżący katalog użytkownika można również użyć tego:

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

Działa to dla Python 3. *, a także:

os.path.join(os.environ['HOME'] + "/Documents and Settings") 
0

Jeśli chcesz katalogu pulpitu, okien 7 ma zmienną środowiskową: DESKTOP:

>>> import os 
>>> print os.environ['desktop'] 
C:\Users\KingMac\Desktop 
Powiązane problemy