Seite 1 von 1

Datei Ersteller auslesen?

Verfasst: Donnerstag 23. Dezember 2021, 20:23
von Levay87
Ich möchte ein Programm schreiben, welches mir Anzeigt welcher Nutzer Daten in einer Ordnerstruktur abgelegt hat.
Ist das möglich?

Re: Datei Ersteller auslesen?

Verfasst: Donnerstag 23. Dezember 2021, 22:30
von /me
Da fehlt mindestens eine entscheidende Angabe: Für welches Betriebssystem? Optimalerweise auch noch die Angabe für welches Dateisystem und mit welchen Benutzerberechtigungen.

Re: Datei Ersteller auslesen?

Verfasst: Freitag 24. Dezember 2021, 15:25
von DeaD_EyE
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

Re: Datei Ersteller auslesen?

Verfasst: Freitag 24. Dezember 2021, 15:32
von sparrow
Wie wäre es mit pathlib.Path.owner() ?

Re: Datei Ersteller auslesen?

Verfasst: Freitag 24. Dezember 2021, 16:45
von __blackjack__
@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.

Re: Datei Ersteller auslesen?

Verfasst: Sonntag 26. Dezember 2021, 20:17
von jakemarx94
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']