Seite 1 von 1

mode-Parameter für os.chmod ist mir unklar...

Verfasst: Montag 23. Mai 2011, 14:36
von mutetella
Hallo,

in der Doku zu 'os.chmod' steht unter anderem:
"Change the mode of path to the numeric mode."

Wenn ich nun, wie ich das von 'chmod' gewohnt bin, als 'mode' eine 4-stellige Zahlenfolge übergebe, werden die Rechte auch wie erwartet gesetzt.

Allerdings ist mir jetzt nicht klar, wie eine Zahl, die mit 0 beginnt, von Python interpretiert wird.

Code: Alles auswählen

In [122]: 0644
Out[122]: 420

In [123]: 644
Out[123]: 644
Wenn ich 0644 übergebe, was kommt denn nun bei 'os.chmod' an? 420, 644 oder 0-6-4-4?

Aber für mich am wichtigsten: Ist es richtig, als mode-Parameter eine Zahlenfolge, wie man sie auch unter Linux verwendet, zu übergeben?

mutetella

Re: mode-Parameter für os.chmod ist mir unklar...

Verfasst: Montag 23. Mai 2011, 14:46
von snafu
Das, was bei deinen Versuchen bei "Out:" rauskommt, ist auch das, was bei `chmod()` ankommt. Da steckt keine spezielle "`chmod()`-Magie" hinter. ;)

Re: mode-Parameter für os.chmod ist mir unklar...

Verfasst: Montag 23. Mai 2011, 14:49
von BlackJack
@mutetella: Zahlenliterale die mit 0 beginnen werden von Python als Oktalzahl interpretiert. 0644 und 420 haben den gleichen Wert — die Frage was davon jetzt bei `os.chmod` ankommt stellt sich also nicht. Man könnte das auch als ``0x1a4`` oder ``86 * 5`` schreiben. Es ist halt eine Zahl und bei den Beispielen immer die Gleiche.

Re: mode-Parameter für os.chmod ist mir unklar...

Verfasst: Montag 23. Mai 2011, 14:58
von snafu
Und wenn du nicht so recht weißt, was du dort einsetzen sollst, dann halte dich am besten an die Doku und nutze die Konstanten aus dem `stat`-Modul in Kombination mit dem `|`-Operator. Dürfte auch wesentlich lesbarer sein. ;)

Re: mode-Parameter für os.chmod ist mir unklar...

Verfasst: Montag 23. Mai 2011, 15:09
von lunar
@snafu: Ob "stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH" jetzt wirklich so viel lesbarer ist als "0o644" ...

Re: mode-Parameter für os.chmod ist mir unklar...

Verfasst: Montag 23. Mai 2011, 15:16
von mutetella
snafu hat geschrieben:Und wenn du nicht so recht weißt, was du dort einsetzen sollst, dann halte dich am besten an die Doku und nutze die Konstanten aus dem `stat`-Modul in Kombination mit dem `|`-Operator.
Mitunter deshalb entstand meine Frage, weil ich eben erstmal versucht habe, ein in meinen Augen lesbareres 0644 zu übergeben anstatt 4 schwer zu deutende Konstanten.
Aber wie so oft: Hier ist es wohl eine Frage der Gewohnheit...

Danke für Eure Erklärung, ich bleibe dann bei meiner linuxgewohnten Schreibweise.

mutetella

Re: mode-Parameter für os.chmod ist mir unklar...

Verfasst: Montag 23. Mai 2011, 15:23
von snafu
lunar hat geschrieben:@snafu: Ob "stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH" jetzt wirklich so viel lesbarer ist als "0o644" ...
Ja gut, ok. Wenn ein Leser sich nicht mit der Materie auskennt, sind wahrscheinlich beide Schreibweisen erstmal böhmische Dörfer. Die Bezeichnungen sind leider doch sehr kryptisch gewählt worden. Auf der anderen Seite lässt sich aber mittels Suchmaschine recht schnell die Bedeutung von S_IWUSR usw erkennen anstatt, dass man da nach der Zahl suchen müsste. Ist aber sicher Geschmackssache.