Seite 1 von 1
Systemvariable auslesen
Verfasst: Mittwoch 25. November 2009, 09:26
von halo23
Ich würde gerne den am System angemeldeteten Benutzer in einem Pythonskript verwenden.
Code: Alles auswählen
>>> import subprocess
>>> user = subprocess.Popen(["echo", "$USER"], stdout=subprocess.PIPE)
>>> user = user.stdout.read()
>>> print user
$USER
Allerdings bekomme ich die Systemvariable zurück und nicht deren Inhalt.
Was mache ich falsch?
Verfasst: Mittwoch 25. November 2009, 09:31
von cofi
Verfasst: Mittwoch 25. November 2009, 09:33
von Hyperion
Ich würds wohl so angehen:
Code: Alles auswählen
In [8]: import os
In [9]: print os.environ["USER"]
------> print(os.environ["USER"])
nelson
Verfasst: Mittwoch 25. November 2009, 09:34
von halo23
Ah, Danke, da habe ich mal wieder zu kompliziert gedacht.
Wenn ich noch verstehen würde warum mein Versuch nicht funktioniert, dann wäre ich rundum zufrieden.
Verfasst: Mittwoch 25. November 2009, 09:37
von cofi
In dem Aufruf ist keine Shell eingebunden - erst die Shell loest `$USER` auf, dafuer brauchst du ein `shell=True`, allerdings funktionierte das in meinen Tests auch nicht.
Verfasst: Mittwoch 25. November 2009, 21:26
von Leonidas
Also für den Usernamen tät ich ja ``getpass.getuser()`` verwenden, das ist IMHO etwas sinnvoller als aus dem Enironment Sachen auszulesen.
Verfasst: Mittwoch 25. November 2009, 21:32
von hendrikS
Leonidas hat geschrieben:Also für den Usernamen tät ich ja ``getpass.getuser()`` verwenden, das ist IMHO etwas sinnvoller als aus dem Enironment Sachen auszulesen.
Macht auf jeden Fall unter Windows Sinn, da es "USER" dort nicht gibt, wenn man es nicht selbst anlegt.
Edit: Na ja, es gibt "USERNANE" unter Windows.
Verfasst: Mittwoch 25. November 2009, 21:33
von Dav1d
Hyperion hat geschrieben:Ich würds wohl so angehen:
Code: Alles auswählen
In [8]: import os
In [9]: print os.environ["USER"]
------> print(os.environ["USER"])
nelson
Geht bei mir nicht
Code: Alles auswählen
>>> import os
>>> print os.environ["USER"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\lib\os.py", line 423, in __getitem__
return self.data[key.upper()]
KeyError: 'USER'
>>>
Verfasst: Mittwoch 25. November 2009, 21:42
von hendrikS
hendrikS hat geschrieben:Leonidas hat geschrieben:Also für den Usernamen tät ich ja ``getpass.getuser()`` verwenden, das ist IMHO etwas sinnvoller als aus dem Enironment Sachen auszulesen.
Macht auf jeden Fall unter Windows Sinn, da es "USER" dort nicht gibt, wenn man es nicht selbst anlegt.
Edit: Na ja, es gibt "USERNAME" unter Windows.
Verfasst: Donnerstag 26. November 2009, 14:12
von Dav1d
Uups da hab ich wohl zu früh das Schreiben angefangen
Verfasst: Donnerstag 26. November 2009, 14:39
von Hyperion
hendrikS hat geschrieben:
Macht auf jeden Fall unter Windows Sinn, da es "USER" dort nicht gibt, wenn man es nicht selbst anlegt.
Dann hab ich das wohl mal angelegt... bei mir ging das nämlich. Aber Leonidas Lösung ist sicherlich eleganter.
Verfasst: Freitag 27. November 2009, 09:52
von hendrikS
In der cygwin Umgebung ist USER vorhanden.
Verfasst: Freitag 27. November 2009, 09:57
von Hyperion
hendrikS hat geschrieben:In der cygwin Umgebung ist USER vorhanden.
Ist bei mir nicht installliert
