Hallo,
ich möchte den Besitzer einer Datei unter Linux ermitteln. In der Shell geht das mit
stat -c %U Datei
Versuche ich
b=os.popen('stat -c \%U %s' % (a))
so erhalte ich bei Ausgabe von b
<open file 'stat -c %U unison.log', mode 'r' at 0x83378d8>
Wie Trunkiere ich %U richtig, oder kennt jemand eine andere Möglichkeit an den Besitzer einer Datei zu kommen?
Besitzer einer Datei ermitteln
Die Rückgabe ist ein Dateiobjekt, dass man erst lesen muss, um an die Daten zu kommen. Im Übrigen gibt es subprocess für Unterprozesse und os.stat, um Metainformationen wie den Eigentümer abzufragen.
os.stat koennte helfen.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Hallo,
vielen Dank für den Tipp. Das hat mich auf die Spur gebracht. Die Lösung ist:
filestat = os.lstat('file name')
fileuser = pwd.getpwuid(filestat.st_uid)[0]
Danach enthält fileuser den Klartextnamen des Benutzers.
vielen Dank für den Tipp. Das hat mich auf die Spur gebracht. Die Lösung ist:
filestat = os.lstat('file name')
fileuser = pwd.getpwuid(filestat.st_uid)[0]
Danach enthält fileuser den Klartextnamen des Benutzers.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Zum interpretieren der `os.stat'-Ausgabe gibts auch noch das stat-Modul
Wobei das ziemlich unlesbaren, sehr eng an C angelehnten Kram enthält und AFAIK alles lesbarer auch als Funktionen in `os.path` vorhanden ist.
Naja, nicht alles, os.path.getowner() gibts nicht
Aber das "stat"-Modul benötigt man trotzdem nicht, weil die die Rückgabe von "os.stat" ein Objekt mit entsprechenden Attributen ist. Was im übrigen auch für die Rückgabe von pwd.getpwuid gilt, so dass man auf den "magischen" Index verzichten kann:
Btw, bist du sicher, dass du wirklich "lstat" nutzen willst? Das gibt dir beim symbolischen Links nämlich den Eigentümer des Links und nicht den eigentlich relevanten Eigentümer der verlinkten Datei zurück.
Aber das "stat"-Modul benötigt man trotzdem nicht, weil die die Rückgabe von "os.stat" ein Objekt mit entsprechenden Attributen ist. Was im übrigen auch für die Rückgabe von pwd.getpwuid gilt, so dass man auf den "magischen" Index verzichten kann:
Code: Alles auswählen
def getowner(path):
return pwd.getpwuid(os.lstat(path).st_uid).pw_name