2012-11-30 13 views
8

So che usando il comando getpass.getuser(), posso ottenere il nome utente, ma come posso implementarlo automaticamente nel seguente script? Quindi voglio python per trovare il nome utente e quindi implementarlo nello script seguente.Come rendere Python ottenere il nome utente in Windows e poi implementarlo in uno script

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

(Python Versione 2.7 in uso)

+1

Stai solo chiedendo come mettere t risultato di 'getpass.getuser()' al posto della stringa ''USERNAME'' nel tuo comando? Se è così, è così semplice come sembra: basta scrivere 'getpass.getuser()' dove hai scritto ''USERNAME'', e il gioco è fatto. – abarnert

+1

Può essere un duplicato di [questa domanda] (http://stackoverflow.com/questions/842059/is-there-a-portable-way-to-get-the-current-username-in-python) – cfi

risposta

12

os.getlogin() ritorno l'utente che sta eseguendo la, in modo che possa essere:

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

o, usando getpass. getuser()

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

Se capisco cosa hai chiesto.

+0

Grazie uomo , Ha funzionato come un fascino – KingMak

+5

Il problema con questa soluzione è che sei dipendente dalla lingua. Ad esempio: il nome tedesco di "Documents and Settings" è "Dokumente und Einstellungen". Il prossimo punto è che tu prenda un'altra ipotesi sulla directory Desktop. Cosa, se hai bisogno di accedere alla directory SendTo? Su Windows XP e Windopws 7 hanno percorsi relativ diffrent diversi all'interno del profilo utente. Per superare le dipendenze di lingue e versioni, dovresti usare chiamate come quelle di win32com. Consenti a Windows di restituire il directoryname dell'entità richiesta dell'utente (Desktop, SendTo, ecc.) – f4m8

4

Installare win32com, quindi:

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

Um ... che * è * Python. – abarnert

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

dovrebbe essere sufficiente ... Credo che è questo ciò che in realtà voleva dire comunque ..

+0

bene anche questo script ha funzionato, ma cambia la mia directory che non voglio, grazie per la pubblicazione anche se – KingMak

+1

cosa vuoi dire che ha cambiato la directory? –

22

os.getlogin() non esisteva per me. Ho avuto successo con os.getenv('username') tuttavia.

+0

Questo è l'unico modo per farlo funzionare su IronPython che ho trovato. – bastula

0

per ottenere la directory utente corrente è anche possibile utilizzare questo:

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

Questo funziona per Python 3. * così:

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

Se si desidera che la directory del desktop, Windows 7 ha una variabile di ambiente: DESKTOP:

>>> import os 
>>> print os.environ['desktop'] 
C:\Users\KingMac\Desktop 
Problemi correlati