Seite 1 von 1

Trotz vollem Zugriff keinem Zugriff?

Verfasst: Montag 4. März 2013, 20:14
von Gary123456

Code: Alles auswählen

import os
import sys
os.chmod("C:/Menutzer",0o640)
os.remove("C:/Menutzer")

def Verzeichnisse(a):
    try:
        os.makedirs(a)
    except Exception:
        return print("Fehlgeschlagen")

Verzeichnisse("C:/Menutzer")
Warum kann es das Verzeichnis nicht löschen? Welche Rechte fehlen mir denn noch? Kann es daran liegen, dass ich keine AdminRechte habe?

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Montag 4. März 2013, 22:01
von darktrym
Schau dir mal die Rechte des Nutzers für das Wurzelverzeichnis an. Danach kann du nicht mal Dateien erzeugen geschweige denn ändern.

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 16:27
von Gary123456
Du meinst die Rechte für C:// ? Verzeichnisse konnte ich ja erstellen, löschen nicht mehr. Habe mir die Rechte für den Ordner angeschaut und finde es schade, dass es für mich nicht mehr gibt. Heisst das jetzt, dass ich jetzt nur im Adminmodus Verzeichnisse erstellen und löschen kann? Wäre ziemlich schade.

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 16:50
von BlackJack
@Gary123456: Die Frage ist *wo* Du Verzeichnisse erstellen willst. Das nicht jeder Benutzer Verzeichnisse im Wurzelverzeichnis erstellen darf, würde ich jetzt nicht wirklich schlimm finden. Benutzer können sich doch in ihrem Heimatverzeichnis austoben wie sie lustig sind.

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 16:52
von Gary123456
Ihr versteht mich falsch. Erstellen tut es das Verzeichnis schon, nur löschen tut es das nicht.

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 17:22
von Sr4l
Benutzt du dein Script was du oben zeigst um das zu testen? Ist dir klar in welcher Reihenfolge das was getan wird? Ansonsten zeig mal den Code den du verwendest.

PS: Unter Windows ist os.chmod relativ sinnlos, du kannst damit nur den ReadOnly Flag setzen oder eben nicht.

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 17:27
von Gary123456

Code: Alles auswählen

import os
import sys



def Verzeichnisse(a):
    try:
        os.makedirs(a)
        os.chmod(a,0o640)
    except:
        return print("1")

def DateienListen(a):
    try:
        os.chmod(a,0o640)
        return os.listdir(a)
    except:
        return print("2")

def VerzeichnisLöschen(a):
    try:
        os.chmod(a,0o640)
        return os.removedirs(a)
    except:
        return print("3")

Verzeichnisse("C:/Menutzer")
VerzeichnisLöschen("C:/Menutzer")
Er scheint zu gehen. Juhu

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 18:11
von Sr4l
Ich Frage nochmal: Dir ist klar was os.chmod tut? Mal davon abgesehen das es unter Windows kaum etwas ändert, macht es keinen Sinn die Rechte des Ordners beim Auflisten der Dateien im Ordner zu ändern.

Zum anderen musst du mir noch die Funktion von "return print()" erläutern. Entweder gibst du ein "True" nach Erfolg zurück und ein "False" beim scheitern oder du schreibst in den except Block ein pass und machst nichts oder du schreibst nur ein print, aber bitte kein return print().

Auch solltest du über deine ausnahmslosen excepts nachdenken. So erfährst du nicht genau was passiert. Nicht perfekt, aber denk doch mal über etwas in der Art nach:

Code: Alles auswählen

def DateienListen(x):
    try:
        return os.listdir(x)
    except OSError as e:
        print(e)
        return False
mfG

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 18:31
von Gary123456
Ist mir alles bewusst. Except alles bewusst gewählt, keine Sorge. Werde am Ende des Programms das alles ändern. :)

Re: Trotz vollem Zugriff keinem Zugriff?

Verfasst: Dienstag 5. März 2013, 20:53
von /me
Gary123456 hat geschrieben:Ist mir alles bewusst. Except alles bewusst gewählt, keine Sorge. Werde am Ende des Programms das alles ändern. :)
Ich halte es nicht für eine gute Art der Programmierung zuerst bewusst schludrig und falsch zu schreiben um hinterher alles zu überarbeiten. Es ist deutlich einfacher, wenn man es sofort richtig macht.