Datei Ersteller 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
Levay87
User
Beiträge: 4
Registriert: Mittwoch 18. September 2013, 22:00

Ich möchte ein Programm schreiben, welches mir Anzeigt welcher Nutzer Daten in einer Ordnerstruktur abgelegt hat.
Ist das möglich?
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Da fehlt mindestens eine entscheidende Angabe: Für welches Betriebssystem? Optimalerweise auch noch die Angabe für welches Dateisystem und mit welchen Benutzerberechtigungen.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1244
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Leider kenne ich keine einfache Lösung.

Mit pywin32:

Code: Alles auswählen

import pathlib
import platform


if platform.system() == "Windows":
    from win32api import GetUserNameEx
    from win32con import NameSamCompatible
    from win32security import OWNER_SECURITY_INFORMATION, GetFileSecurity, LookupAccountSid


# def whoami() -> str:
#    return GetUserNameEx(NameSamCompatible).rpartition("\\")[2].strip()


    def get_owner(file: str | pathlib.Path) -> tuple[str, str]:
        """
        Return owner and domain of current file.
        """

        file = str(file)
        owner_sid = GetFileSecurity(
            file,
            OWNER_SECURITY_INFORMATION,
        ).GetSecurityDescriptorOwner()

        name, domain, _ = LookupAccountSid(None, owner_sid)

        return name, domain


    class WindowsPath(pathlib.WindowsPath):
        def owner(self):
            return get_owner(self)[0]


    def Path(*args, **kwargs):
        path = pathlib.Path(*args, **kwargs)

        if isinstance(path, pathlib.WindowsPath):
            return WindowsPath(path)

        return p

else:
    Path = pathlib.Path

Edit: Die if/else Verzweigung kann man weglassen, in man das als Modul abspeichert und dann in einem anderen Modul bedingt importiert, wie es im Beispielcode steht, aber halt kürzer. Nachteil ist aber, dass man pywin32 benötigt und ggf. es durch die Änderung zu weiteren unerwarteten Problemenm unter Windows vorkommen können. Es ist z.B. nicht group implementiert.

Ohne pywin32: https://stackoverflow.com/questions/808 ... ut-pywin32
Ehrlich gesagt, will ich das nicht anpassen :-D
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Wie wäre es mit pathlib.Path.owner() ?
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@sparrow: Unter nicht-Unix bekommst Du bei der Methode ein NotImplementedError("Path.owner() is unsupported on this system") oder technisch etwas präziser unter Systemen die kein `pwd`-Modul in der Standardbibliothek haben.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
jakemarx94
User
Beiträge: 1
Registriert: Sonntag 26. Dezember 2021, 20:07

moin ich habe mal eine frage,
ich möchte aus einer txt liste von Namen die untereinander geschrieben sind nacheinander eine Person raus schreiben und unten in "username" einfügen.

Code: Alles auswählen

#var für die DM liste
DMList = open('textdatei.txt', 'r')
for zeile in DMList:



#username list
usernames = ['DMList']
Antworten