2016-12-16 3 views
2

Ich brauche eine Lösung, wie Dateiberechtigungen in einem Python-Skript ausgedruckt werden. Die Idee ist, den Shell-Befehl $: ls -l an ein Python-Skript zu übergeben, von wo ich die Zeilen mit "zusätzliche Erklärung" ausdrucken werde. Zum BeispielDrucken von Datei/Ordner Berechtigungen

-rwxrwxr-x

Die zusätzliche Erklärung wäre:

Owner of the file has reading rights, writing right, but doesn't have execution rights. Group has reading rights, writing right and execution rights.

Anstatt also über sämtliche möglichen Fälle, wer welche Rechte hat, ist es eine einfachere Möglichkeit, dies außer zu tun Überprüfen Sie jeden Fall mit einer if bedingten?

+0

Ich bin nicht sicher, was genau über Sie fragen? Wie erhalte ich Zugangsbits für eine Datei oder wie drucke ich sie im benutzerfreundlichen Format? – Andrey

+3

Können Sie Ihren Lösungsversuch zeigen? – 0xtvarun

+0

In 3 Gruppen von 3 Zeichen aufteilen (das Sticky-Bit ignorieren) - dann rufen Sie eine Funktion auf, die die 3 zu beschreibenden Zeichen plus einen Namen ("Besitzer" oder "Gruppe" oder "alle anderen") weitergibt. Was ist die Schwierigkeit? – Useless

Antwort

1

Hier ist ein Code, um loszulegen.

Wir erstellen zuerst eine Liste mit dem Namen modes, die alle Kombinationen enthält, die die Berechtigung und die Art der Berechtigung haben, die sie haben. Dann schleifen wir den Modus-String und unsere modes-Liste parallel und greifen die zugehörige Kombination von modes, wenn der Modus-String in dieser Position keinen - hat.

modes = [(who, kind) for who in ('user', 'group', 'others') 
    for kind in ('read', 'write', 'execute')] 

def explain_modestring(modestring): 
    return ', '.join([' can '.join(t) 
     for c, t in zip(modestring[1:], modes) if c != '-']) 

for s in ('-rwxrwxrwx', '-rwxr-xr--', '-r--------'): 
    print(s, explain_modestring(s)) 

Ausgang

-rwxrwxrwx user can read, user can write, user can execute, group can read, group can write, group can execute, others can read, others can write, others can execute 
-rwxr-xr-- user can read, user can write, user can execute, group can read, group can execute, others can read 
-r-------- user can read 
+0

Ja, das ist die exakte Ausgabe, die ich erreichen wollte. Sehr geschätzt – monolith937

Verwandte Themen