Dateiberechtigungen in Python ändern
- Betriebssystemdateiberechtigungen in Python
-
Verwenden Sie
chmod()
, um Dateiberechtigungen in Python zu ändern
Bei der Arbeit mit Dateien innerhalb von Python oder rund um eine Python-Anwendung kann es unerlässlich sein, über die richtigen Dateiberechtigungen zu verfügen, um die beabsichtigten Vorgänge auszuführen. Von funktionierenden Skriptdateien bis hin zu Datenexporten können die von den Python-Anwendungen erstellten, aktualisierten oder verwalteten Dateien auch mit dem Python-Code bearbeitet werden.
In der Regel verwenden die meisten Entwickler mit Dateiberechtigungen Befehlszeilenbefehle oder Skripts. Es ist jedoch möglich, Dateiberechtigungen in Python mithilfe bestimmter integrierter Bibliotheken und ihrer Methoden zu ändern.
In diesem Artikel wird erläutert, wie Sie Dateiberechtigungen in Python ändern.
Betriebssystemdateiberechtigungen in Python
Innerhalb der Betriebssysteme, von Windows bis Linux, sind ihnen unterschiedliche Berechtigungen eigen. Die Berechtigungen zum Lesen, Schreiben und Ausführen werden je nach Verwendungszweck auf Dateien festgelegt.
Der Datei-Explorer stellt häufig Benutzeroberflächen bereit, die es typischen Benutzern ermöglichen, die einer Datei gewährten Dateiberechtigungen zu ändern. Für die meisten Entwickler geschieht dies jedoch über die Befehlszeilenschnittstelle.
Für Linux (im Allgemeinen Unix-Systeme) und sogar Windows können Sie neben anderen Informationen, die eine Datei enthält, die Dateiberechtigungen überprüfen.
Unter Windows:
ls
Ausgang:
Directory: C:\Users\USER
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 7/13/2022 8:09 PM .android
d----- 9/23/2022 8:11 PM .vscode
d-r--- 5/9/2022 1:34 PM 3D Objects
d----- 5/12/2022 11:49 PM Apple
d----- 8/30/2022 1:20 PM Autodesk
d-r--- 3/18/2022 6:34 AM Contacts
d-r--- 9/23/2022 8:19 PM Desktop
d-r--- 9/23/2022 8:52 PM Documents
d-r--- 9/28/2022 12:48 PM Downloads
d-r--- 3/18/2022 6:34 AM Favorites
d-r--- 4/28/2022 11:03 AM Links
d-r--- 7/16/2022 10:41 PM Music
d-r--- 4/11/2022 11:39 PM OneDrive
d-r--- 9/22/2022 11:13 AM Pictures
d-r--- 3/18/2022 6:34 AM Saved Games
d-r--- 3/18/2022 6:35 AM Searches
d-r--- 9/26/2022 2:49 PM Videos
-a---- 9/23/2022 8:25 PM 5 .node_repl_history
-a---- 9/27/2022 2:34 AM 1100 pslog.txt
Die Registerkarte Modus
enthält die Dateiberechtigung-Informationen, die die erste Spalte ist, die den Dateityp anzeigt.
In ähnlicher Weise können Sie für Unix-Systeme wie Linux alle Dateiinformationen auflisten.
ls -la
Ausgang:
drwxr-xr-x 6 eva users 1024 Jun 8 16:46 sabon
-rw------- 1 eva users 1564 Apr 28 14:35 splus
-rw------- 1 eva users 1119 Apr 28 16:00 splus2
-rw-r--r-- 1 eva users 9753 Sep 27 11:14 ssh_known_hosts
-rw-r--r-- 1 eva users 4131 Sep 21 15:23 swlist.out
-rw-r--r-- 1 eva users 94031 Sep 1 16:07 tarnti.zip
Außerdem enthält die erste Spalte den Modus (drwxr-xr-x
). In der ersten Spalte gibt es vier Aufschlüsselungen.
Die erste Aufschlüsselung ist das erste Zeichen, das den tatsächlichen Dateityp darstellt. Die zweite Aufschlüsselung (die nächsten drei Zeichen) zeigt die Zugriffsrechte (oder Berechtigungen) des Benutzers.
Die dritte Aufschlüsselung (die nächsten drei Zeichen) zeigt die Berechtigungen der Gruppe, der die Datei gehört. Und die letzte Aufschlüsselung (die letzten drei Zeichen) zeigt die Berechtigungen anderer Benutzer.
Lassen Sie uns nun diesen drwxr-xr-x
-Modus verwenden, um es zu erklären. Bevor wir fortfahren, müssen Sie wissen, was die drei Buchstaben bedeuten:
r
bedeutet gelesen.w
bedeutet schreiben.x
bedeutet Ausführen.
Jeder Datei oder jedem Verzeichnis werden Zugriffsrechte für den Dateieigentümer, die Mitglieder einer Gruppe verwandter Benutzer und andere zugewiesen. Rechte können gesetzt werden auf:
- Lesen Sie eine Datei.
- Schreiben Sie eine Datei.
- Führen Sie eine Datei aus.
Das erste Zeichen d
zeigt an, dass es sich um ein Verzeichnis handelt. Wenn das Zeichen jedoch -
ist, handelt es sich um eine typische Datei.
Die nächsten drei Zeichensätze rwx
bedeuten, dass die Benutzer das Verzeichnis lesen, schreiben und ausführen können. Die nächsten drei, r-x
, bedeuten, dass die Gruppe das Verzeichnis lesen und ausführen, aber nicht schreiben kann.
Die letzten drei, r-x
, bedeuten, dass andere das Verzeichnis lesen und ausführen, aber nicht schreiben können.
Um also die Berechtigung einer Datei unter Linux zu ändern, ist ein einfacher chmod
-Befehl oft nützlich.
chmod u+x someFile
Das u+x
ist die Erlaubnis, die someFile
gegeben wird.
Die Berechtigung u+x
fügt dem Benutzer (Remember, Benutzer, Gruppe und andere Benutzer) von someFile
Ausführungsrechte hinzu (+
). Denken Sie daran, dass die Ausführung durch x
dargestellt wird.
Aber wir können dies innerhalb von Python ganz einfach erreichen. Mit diesem Wissen können Sie jetzt problemlos die Berechtigungen von Dateien in Python ändern.
Verwenden Sie chmod()
, um Dateiberechtigungen in Python zu ändern
Die Methode chmod()
stammt aus dem Befehl chmod
von Linux, dessen Aufgabe es ist, den Modus einer Datei oder eines Verzeichnisses zu ändern. Die Methode chmod()
ist über das Modul os
verfügbar, das bei jeder Python-Installation oder -Umgebung standardmäßig vorhanden ist.
Das os
-Modul stellt Schnittstellen und Methoden bereit, die es uns ermöglichen, mit jedem Betriebssystem zu interagieren. Es bietet Betriebssystemroutinen für NT oder Posix, abhängig von seinem System.
Unter vielen Funktionen ermöglicht es uns, Verzeichnisse zu verwalten, ihren Inhalt abzurufen und das Verhalten und die Modi innerhalb solcher Verzeichnisse zu ändern.
Neben der chmod()
-Methode brauchen wir ein weiteres Modul namens stat
, das Konstanten/Funktionen bereitstellt, um die Ergebnisse von os.stat()
und os.lstat()
zu interpretieren. Diese Statistik
stellt die Berechtigungs-Flags bereit, die wir benötigen, um die Dateiberechtigungen für den Benutzer, die Gruppe oder andere Benutzer zu ändern.
Die Berechtigungsflags, die übereinander fallen, umfassen Lese-, Schreib- und Ausführungsvorgänge.
Wir müssen ihre Module importieren, um chmod()
und stat
zu verwenden.
import os
import stat
Außerdem müssen wir auf die Datei zugreifen, deren Berechtigungen wir ändern möchten. Auch dafür ist das Modul os
nützlich.
Das chmod()
arbeitet mit folgender Syntax:
os.chmod(filePath, permissionFlag)
Um den aktuellen Berechtigungsmodus einer Datei (z. B. einer neu erstellten index.txt
) zu überprüfen, können Sie die Methode stat()
verwenden.
perm = os.stat("index.txt")
print(perm.st_mode)
Ausgang:
33206
Die Eigenschaft os.stat()
erhält den Status eines angegebenen Pfads, und die Eigenschaft st_mode
stellt die Berechtigungsbits der Datei bereit, wobei die ersten beiden Oktalziffern den Dateityp und die anderen vier die Dateiberechtigungen angeben.
Die Datei muss sich im selben Verzeichnis wie die Python-Datei befinden oder den vollständigen Dateipfad angeben.
Unter Verwendung der oktalen Notation (eine von zwei Möglichkeiten, Berechtigungen anzugeben) für Linux-Benutzer können wir uns die Berechtigungseinstellungen als eine Reihe von Bits vorstellen, die im folgenden Code-Snippet beschrieben sind.
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000
# rwx = 111 in binary = 7
# rw- = 110 in binary = 6
# r-x = 101 in binary = 5
# r-- = 100 in binary = 4
Um den Berechtigungsmodus zu ändern, können Sie dann die Berechtigungsflags stat
verwenden:
import os
import stat
perm = os.stat("index.txt")
print(perm.st_mode)
os.chmod("index.txt", stat.S_IWGRP)
perm = os.stat("index.txt")
print(perm.st_mode)
Ausgang:
33206
33060
Die erste Oktalzahl zeigt den Berechtigungsstatus vor der Änderung, und die zweite Oktalzahl ist diejenige nach dem Hinzufügen der Leseberechtigungen nach Gruppen.
Mit dem |
können Sie verschiedene Berechtigungs-Flags kombinieren Operator. In diesem Beispiel fügen wir die Berechtigungen für den Benutzer zum Lesen, Schreiben und Ausführen hinzu.
import os
import stat
perm = os.stat("index.txt")
print(perm.st_mode)
os.chmod("index.txt", stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC | stat.S_IRUSR)
perm = os.stat("index.txt")
print(perm.st_mode)
Ausgang:
33060
33206
Es gibt andere Berechtigungs-Flags, die unten zu sehen sind:
stat.S_IREAD
-,stat.S_IWRITE
- undstat.S_IEXEC
-Flags zum Hinzufügen von Lese-, Schreib- bzw. Ausführungsrechten für einen Benutzer zu einer Datei.- Flags
stat.S_IRGRP
,stat.S_IWGRP
undstat.S_IXGRP
zum Hinzufügen von Lese-, Schreib- und Ausführungsrechten für eine Gruppe zu einer Datei. - Flags
stat.S_IROTH
,stat.S_IWOTH
undstat.S_IXOTH
zum Hinzufügen von Lese-, Schreib- und Ausführungsrechten für andere Benutzer zu einer Datei. - Flags
stat.S_IRWXU
,stat.S_IRWXG
undstat.S_IRWXO
zum gleichzeitigen Hinzufügen von Lese-, Schreib- und Ausführungsrechten für den Benutzer, die Gruppe bzw. andere Benutzer.
Neben der Verwendung der Berechtigungs-Flags können Sie die Oktalnotation innerhalb der chmod()
-Methode verwenden. Verwenden wir die Oktalzahl 755
, die angibt, dass der Benutzer lesen, schreiben und ausführen kann und die Gruppe und andere Benutzer nur lesen und ausführen können.
os.chmod("index.txt", 0o755)
Ausgang:
33206
Sie müssen das Präfix 0o
hinzufügen, um anzuzeigen, dass es sich um eine oktale Notation handelt.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn