IOError: [Errno 13] Berechtigung in Python verweigert

Zeeshan Afridi 21 Juni 2023
  1. Was ist der IOError: [Errno 13] Permission denied in File Handling in Python
  2. So beheben Sie den IOError: [Errno 13] Permission denied in Python
  3. So verwenden Sie den Befehl chmod, um die Berechtigungen einer Datei in Python zu ändern
IOError: [Errno 13] Berechtigung in Python verweigert

Es ist üblich, IOError zu erhalten, weil wir Menschen hauptsächlich mit der GUI eines Computers interagieren; Wir verstehen den Unterschied zwischen Ordnern, Dateien, komprimierten Dateien oder Anwendungen aus den Visuals.

Wir haben so oft mit Ordnern, Dateien, komprimierten Dateien oder Anwendungen interagiert, dass unser Gehirn jetzt manchmal nicht verarbeitet, um zwischen diesen zu unterscheiden.

Aber auf der anderen Seite muss man Computer mit allem füttern, sie verstehen nicht nur das Visuelle; Vielmehr müssen Sie die vollständigen Angaben machen.

Was ist der IOError: [Errno 13] Permission denied in File Handling in Python

Bei der Dateiverwaltung müssen Sie den vollständigen Pfad der Datei angeben, auf die Sie zugreifen möchten. Andernfalls erhalten Sie den IOError. Wenn Sie eine Datei öffnen möchten, aber stattdessen den Pfad des Ordners angegeben haben, werden Sie mit dem IOError: [Errno 13] Permission denied konfrontiert.

Unten ist ein Codebeispiel für den Fehler in Python.

# opening file
f = open("E:\Projects\Test_folder", "r")

Ausgang:

PermissionError: [Errno 13] Permission denied: 'E:\\Projects\\Test_folder'

Im obigen Beispiel versuchen wir, den Test_folder im Lesemodus zu öffnen, aber dies hat den PermissionError: [Errno 13] Permission denied ausgelöst.

So beheben Sie den IOError: [Errno 13] Permission denied in Python

Um dies zu beheben, müssen Sie den richtigen Pfad zu der Datei eingeben, auf die Sie zugreifen möchten, nicht den Ordner. Nehmen wir an, wir haben zwei Dateien im Test_folder.

import os

# Folder Path
folder_path = "E:\Client Project Report\Test_folder"

# display all files in a folder
print(f"All files in the Test_folder are\n{os.listdir(folder_path)}")

# file path
file_path = "E:\Client Project Report\Test_folder\Test_file_1.txt"

# read file
f = open(file_path, "r")
print(f"\n{f.read()}")

# file closed
f.close()

Ausgang:

All files in the Test_folder are
['Test_file_1.txt', 'Test_file_2.txt']

Hi There!
This is test file 1

Nachdem Sie den Pfad der Datei angegeben haben, wird der Fehler behoben. Außerdem ist es eine gute Praxis, die geöffneten Dateien in Python zu schließen, damit niemand diese Datei weiter lesen und schreiben kann, bis sie erneut geöffnet wird, und wenn Sie versuchen, eine geschlossene Datei zu schreiben oder zu lesen, wird ein WertFehler.

Obwohl Python eine Datei automatisch schließt, wenn das Referenzobjekt der Datei einer anderen Datei zugewiesen wird. Trotzdem ist es eine gute Praxis, eine Datei mit der Funktion close() zu schließen.

Darüber hinaus können Sie auch Mechanismus zur Ausnahmebehandlung wie try-catch-Blöcke verwenden, um solche Fehler abzufangen und Ihr Programm vor Abstürzen zu schützen.

So verwenden Sie den Befehl chmod, um die Berechtigungen einer Datei in Python zu ändern

Wie bereits erwähnt, tritt IOError: [Errno 13] Permission denied auf, wenn Sie versuchen, eine Datei zu öffnen, die nicht zulässig ist.

Angenommen, Sie möchten einen Ordner öffnen, auf den Sie keinen Zugriff haben, aber Sie versuchen dennoch, ein Skript in Python zu schreiben, um diesen Ordner zu öffnen, die Berechtigung zum Zugriff auf den Ordner wird verweigert, und der Python-Compiler gibt den Fehler aus .

Um diesen Fehler zu beheben, können wir den Befehl chmod verwenden, der für Modus ändern steht. Das chmod() erfordert zwei Argumente, den Pfad der Datei/des Ordners, auf den Sie zugreifen möchten, und den Dateimodus.

Der Befehl chmod wird verwendet, um die Dateiberechtigung einer Datei zu ändern, und zwar durch Ändern der Berechtigungs-Flags einer bestimmten Datei.

Die Berechtigungsflags werden durch einen dreistelligen Oktalwert dargestellt, mit dem Lese-, Schreib- und Ausführungsberechtigungen für den Dateieigentümer, die Dateigruppe und alle anderen Benutzer angegeben werden.

Syntax von chmod:

chmod(path, mode)

Der Befehl akzeptiert zwei Argumente:

  1. Der erste ist der Pfad zu der Datei, deren Berechtigungen Sie ändern möchten.
  2. Und die zweite ist die Berechtigung, die Sie festlegen möchten.

Angenommen, Sie möchten allen Lese- und Schreibberechtigungen für eine Datei namens Dateiname erteilen; Sie würden den folgenden Befehl verwenden.

chmod 777 filename

Das Python-Skript für den obigen Befehl wäre:

import os

os.chmod("my_file", 0o777)

Dieses Stück Code kann auch dargestellt werden als:

import os
import stat

path = "E:\Project\file1.txt"

# stat.S_IRWXU --> All permissions (Read, write, and execute) to the owner
# stat.S_IRWXG --> All permissions (Read, write, and execute) to group
# stat.S_IRWXO --> All permissions (Read, write, and execute) to others

print(os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO))

Dies würde jedem Lese-, Schreib- und Ausführungsberechtigungen für die spezifische Datei geben.

Was bedeutet die drei Oktalzahl in chmod

Die Berechtigungen einer Datei können durch eine Oktalzahl dargestellt werden. Die Oktalzahl besteht aus drei Ziffern, von denen jede eine andere Berechtigung darstellt.

  1. Die erste Ziffer steht für die Erlaubnis des Eigentümers.
  2. Die zweite Ziffer steht für die Berechtigungen der Gruppe.
  3. Und die dritte Ziffer repräsentiert die Berechtigungen für andere.

Die Berechtigungen einer Datei können mit dem Befehl chmod geändert werden, wobei die Oktalzahl die gewünschten Berechtigungen darstellt.

Um beispielsweise dem Eigentümer einer Datei Lese-, Schreib- und Ausführungsberechtigungen zu erteilen, während die Gruppe und andere nur Lese- und Ausführungsberechtigungen erhalten, kann die Oktalzahl 755 verwendet werden.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python Error