2009-05-13 9 views
26

Was ist der beste Weg, um herauszufinden, der Benutzer, unter dem ein Python-Prozess läuft?whoami in python

kann ich dies tun:

name = os.popen('whoami').read() 

Aber das hat einen ganz neuen Prozess zu starten.

os.environ["USER"] 

funktioniert manchmal, aber manchmal ist diese Umgebungsvariable nicht gesetzt.

Antwort

18

Dies sollte unter Unix funktionieren.

import os 
print os.getuid() # numeric uid 
import pwd 
print pwd.getpwuid(os.getuid()) # full /etc/passwd info 
+0

Diese Lösung nur unter Unix arbeitet sehen http://docs.python.org/library/pwd.html?highlight=pwd –

+0

Arbeiten auf meinem Linux-Box, hatte ich die gleiche Antwort wie diese aber wird es löschen wie ich 2 Minuten später war ;-) – ChristopheD

+0

getpass.getuser() verwendet diesen Ansatz als Fallback, wenn er den Benutzernamen in den Umgebungsvariablen nicht finden kann. –

56
import getpass 
print getpass.getuser() 

die Dokumentation des getpass Modul.

getpass.getuser()

Rückkehr der „Login-Name“ des Benutzers. Verfügbarkeit: Unix, Windows.

Diese Funktion prüft die Umgebungsvariablen LOGNAME, USER LNAME und den Benutzernamen, um, und gibt den Wert des ersten , die auf eine nicht-leere Zeichenfolge gesetzt. Wenn keine festgelegt sind, wird der Anmeldename aus der Kennwortdatenbank unter Systeme zurückgegeben, die das Modul pwd unterstützen, andernfalls wird eine Ausnahme ausgelöst.

+1

Das ist so toll, ich kannte das Zeug nicht. –

+6

großartig, aber jeder kann diese Variablen manipulieren. NIEMALS verlassen Sie sich darauf als eine sichere Möglichkeit, den Benutzernamen des Benutzers zu erhalten. du wurdest gewarnt. – Cinder