[Python-de] Re: Files Zugriff unter WINDOWS2000, (Löschen von Dateien mit permission denied)

Gerhard Häring gerhard.haering at opus-gmbh.net
Tue Nov 12 15:47:31 EST 2002


In article <IOEEIPCHIDIHEFEJLJKKEENADCAA.josef.cihal at irm.at>, Josef Cihal wrote:
> Ich möchte unter Windows 2000 Dateien löschen,
> auch die an welche zugegriffen wird...
> Es geht aber nicht!

Du kannst versuchen, das writeable Flag auf die Files zu setzen. Das geht mit
der Funktion os.chmod. Die Funktion erwartet zwei Parameter: den
File-/Directorynamen und den Modus. Das mit dem Modus ist nicht ganz so
trivial, darum hier eine Erklärung [1]:

Der Modus ist ein Bitfeld:

Bit 0: Executable-Recht Andere Benutzer
Bit 1: Lese-Recht       Andere Benutzer
Bit 2: Schreib-Recht    Andere Benutzer

Bit 3: Executable-Recht Gruppe
Bit 4: Lese-Recht       Gruppe
Bit 5: Schreib-Recht    Gruppe

Bit 6: Executable-Recht User
Bit 7: Lese-Recht       User
Bit 8: Schreib-Recht    User

Das Bitfeld stellt man am einfachsten mit einer Oktalzahl dar, so ist z. B.:

0667 = (6 * 010^2) + (6 * 010^1) + (7 * 010^0)
          ^             ^             ^
          |             |             |
        Bits 6- 8     Bits 3-5     Bits 0-2


Wobei 6 oktal = 110 Binär (Lese- u. Schreib-Recht)
und   7 oktal = 111 Binär (Lese-, Schreib- und Ausführen-Recht)

folglich meint 0667:
- Benutzer können lesen und schreiben
- die Gruppe kann lesen und schreiben
- andere Benutzer können lesen, schreiben und ausführen

> Bertiebssystem erlaubt es nicht...
> Die Files liegen auch einer Linux Maschine, aber ich kann nicht das Skript
> dort laufen lassen

Du kannst vielleicht zuvor ein "chmod -R +w /path/to/your/directory" dort
laufen lassen.

> und ...rc = os.popen("rm -fR %s" %os.path.join(aMmiFolder, aFile))...
> benutzen,
> weil ein Teil von Skript arbeitet mit win32process library...
> 
> Gibt es eine möglichkeit, wie kann man diese Files überschreibne ,
> bzw. löschen und anlegen unter Window -Platform???

os.chmod zum Ändern der Rechte hab ich schon erwähnt. Um die
Verzeichnishierarchie durchzugehen und os.chmod auf alle Files und Directories
anzuwenden, sei os.path.walk empfohlen.

HTH,

Gerhard

[1] Das mit den Oktalzahlen für Berechtigungen hab ich selber nie kapiert,
darum mein versuch hier, es mir und Josef zu erklären :) Ich hab mich ewig
gegen diese magic constants gewehrt und unter *nix stattdessen 'r', 'w' und 'x'
verwendet.
-- 
Gerhard Häring
OPUS GmbH München
Tel.: +49 89 - 889 49 7 - 32
http://www.opus-gmbh.net/






More information about the Python-de mailing list