stat.filemode(mode)

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
jve
User
Beiträge: 6
Registriert: Montag 17. August 2020, 14:52

Hi Leute,
Ich möchte die Permissions von Dateien und Verzeichnissen ermitteln. dafür habe ich eine for Schleife gebaut.
ich bin mir jetzt aber nicht sicher, ob bei meiner Schleife wirklich alle Verzeichnisse und Dateien mit stat.filemode überprüft werden.
Vielleicht könnt ihr euch das mal anschauen :D

Danke und beste Grüße

Code: Alles auswählen

def name_dir_file(path):
    liste_verzeichnisse_dateien = []
    for root, dirs, files in os.walk(path):
        for directories in dirs:
            filemode = stat.filemode(os.stat(path).st_mode)
            liste_verzeichnisse_dateien.append(root + '\\' + directories + '\\'+ filemode)
        for Files in files:
            filemode = stat.filemode(os.stat(path).st_mode)
            liste_verzeichnisse_dateien.append(root + '\\' + Files + '\\' + filemode)
    return liste_verzeichnisse_dateien 
    
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

@jve: was denkst Du liefert os.walk zurück? Was enthält dirs oder files? Ist das eine Liste von Listen von Directories oder Files? Das jedenfalls sagen Deine Variablennamen.
Dann solltest Du nochmal genau anschauen, von was Du den Filemode abfrägst. Das sollte dann Deine Frage auch mit nein beantworten. Das ließe sich auch ganz einfach prüfen, indem Du die Funktion einfach ausführst.

Man sollte keine Strings mit + zusammensetzen, erst recht nicht Pfade. Und was soll die Zusammensetzung von Pfad und Filemode ergeben?

os.walk und os.stat sind low-level. Statt dessen benutzt man pathlib.Path.

Code: Alles auswählen

def query_mode_of_all_files(basepath):
    filemodes = []
    for path in basepath.rglob('*'):
        filemode = stat.filemode(path.stat().st_mode)
        filemodes.append((path, filemode))
    return filemodes 
jve
User
Beiträge: 6
Registriert: Montag 17. August 2020, 14:52

@ sirius3
Erstmal Vielen Dank für deine Antwort :D
Zu deiner Frage:
Und was soll die Zusammensetzung von Pfad und Filemode ergeben?

ich möchte gerne den Pfad + Verzeichnis + Datei + Filemode ausgeben lassen. Deshalb habe ich das so gemacht.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Den endgültigen String baust Du erst bei der Ausgabe auf. Wobei meiner Meinung nach ein durch \ getrennter String nicht wirklich für eine schöne Ausgabe taugt.
Antworten