Trotz vollem Zugriff keinem Zugriff?

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
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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?
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Schau dir mal die Rechte des Nutzers für das Wurzelverzeichnis an. Danach kann du nicht mal Dateien erzeugen geschweige denn ändern.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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.
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.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Ihr versteht mich falsch. Erstellen tut es das Verzeichnis schon, nur löschen tut es das nicht.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

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.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

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
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Ist mir alles bewusst. Except alles bewusst gewählt, keine Sorge. Werde am Ende des Programms das alles ändern. :)
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Antworten