Name des aktuellen Benutzers auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kili0302
User
Beiträge: 9
Registriert: Montag 31. Dezember 2018, 14:49

Hallo,

ich würde gerne mit einem Python-Skript auf den Benutzerordner des aktuell angemeldeten Benutzers zugreifen, also "C:/Users/Benutzername".
Da das Skript später von mehreren Leuten verwendet werden soll, ist der Benutzername nicht immer gleich. Gibt es eine Möglichkeit den Namen des aktuellen Benutzers auszulesen und in einer Variable zu speichern, sodass er in den genannten Pfad eingefügt werden kann?

Danke und MfG
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hier findest du verschiedene Wege beschrieben: https://stackoverflow.com/questions/385 ... ed-in-user

Das einfachste wäre das winshell Modul, wenn es noch gut genug unterstützt ist.
Benutzeravatar
snafu
User
Beiträge: 6744
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich würde einfach die passenden Umgebungsvariablen auslesen:

Code: Alles auswählen

import os

print('Benutzername:', os.getenv('USERNAME'))
print('Profilordner:', os.getenv('USERPROFILE'))
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Unter Windows kannst du die Umgebungsvariablen verwenden:

Code: Alles auswählen

>>> import os
>>> os.environ["USERNAME"]
'sparr'
>>> os.environ["HOMEPATH"]
'\\Users\\sparr'
>>> os.environ["LOCALAPPDATA"]
'C:\\Users\\sparr\\AppData\\Local'
>>>
Benutzeravatar
snafu
User
Beiträge: 6744
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Genau, das mit LOCALAPPDATA bzw APPDATA wollte ich auch noch dazu schreiben. Da gehören spezifische Anwendungsdaten hin, wenn man es "sauber" machen will. Den Unterschied hinsichtlich der Bedeutung müsste ich aber selber nachschlagen. Ich kenne es jedenfalls bei pip so, dass APPDATA genommen wird, wenn man ein Paket nur für den Benutzer (`--user`-Option) installiert. Damit landet es dann nicht in AppData\Local, sondern in AppData\Roaming.
Benutzeravatar
snafu
User
Beiträge: 6744
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hab's dann doch mal recherchiert: Bei Roaming werden die Daten auf einen anderen Rechner übertragen, wenn man sich mit seinem Benutzernamen woanders anmeldet und dort das Profil beim Starten neu angelegt wird (Stichwort: Firmennetzwerk). Bei Local hingegen bleiben die Daten nur auf dem PC, wo sie ursprünglich angelegt wurden.
Antworten