PermissionError: [Errno 13] in Python

83

Ich fange gerade an, etwas Python zu lernen und habe ein Problem wie unten angegeben:

a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')
PermissionError: [Errno 13] Permission denied: 'E:\\Python Win7-64-AMD 3.3\\Test\

Scheint ein Dateiberechtigungsfehler zu sein. Wenn jemand etwas Licht ausstrahlen kann, wäre er sehr dankbar.

HINWEIS: Ich bin nicht sicher, wie Python- und Windows-Dateien funktionieren, aber ich bin als Administrator bei Windows angemeldet und der Ordner verfügt über Administratorrechte.

Ich habe versucht, die .exeEigenschaften so zu ändern , dass sie als Administrator ausgeführt werden.

BenniMcBeno
quelle
7
Ist Testeine Datei oder ein Ordner?
Joachim Isaksson
1
@ JoachimIsaksson Es ist definitiv ein Ordner, wie wir am Ende der Fehlerzeile sehen können. Machen Sie das eine Antwort.
Oleh Prypin
Test ist ein Ordner. Das folgende Dokument lautet: Ich kann ein Textdokument mit der folgenden Syntax öffnen: a_file = open ('E: \ Python Win7-64-AMD 3.3 \ Test \ a.txt', encoding = 'utf-8' ) Wenn ich diese Syntax sowie a_file = open verwende ('E: \ Python Win7-64-AMD 3.3 \ Test', encoding = 'utf-8'), erhalte ich den gleichen Fehler.
BenniMcBeno
By the way, erinnern rohe Strings für Windows - Pfadnamen zu verwenden, oder Sie werden schlecht Namen mit beginnen passieren sollen , wenn ein Unterordner gebissen noder boder anderer Brief, den Teil einer Escape - Sequenz sein kann ...
Tim Pietzcker
ok, also die Datei war auf einem Flash-Laufwerk und der Flash-Treiber war FAT32 und meine HD ist NTFS, also gab es Formatkonflikte> <lokal funktioniert es gut, danke Jungs
BenniMcBeno

Antworten:

65

Wenn Sie dies tun;

a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')

... Sie versuchen, ein Verzeichnis als Datei zu öffnen , was möglicherweise (und auf den meisten Nicht-UNIX-Dateisystemen) fehlschlägt.

Ihr anderes Beispiel;

a_file = open('E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')

sollte gut funktionieren, wenn Sie nur die Erlaubnis dazu haben a.txt. Möglicherweise möchten Sie jedoch eine rohe rZeichenfolge (mit Präfix) verwenden, um sicherzustellen, dass Ihr Pfad keine solchen Escape-Zeichen enthält \n, die in Sonderzeichen übersetzt werden.

a_file = open(r'E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')
Joachim Isaksson
quelle
ein ok Roger Glück für mich, ich bin fast immer unter Linux, außer jetzt lol> <, also wen schlägst du vor, ich mache es. Übrigens Test ist ein Ordner / Verzeichnis
BenniMcBeno
2
@bennyboy Hängt davon ab, was Sie erreichen möchten, indem Sie das Verzeichnis anstelle der Datei öffnen ...?
Joachim Isaksson
15

Für mich habe ich in eine Datei geschrieben, die in Excel geöffnet ist.

Kai Wang
quelle
Ich muss in eine geöffnete Excel-Datei schreiben (da sie ein Makro enthält, das ein Python-Skript ausführt). Wie gehen Sie darum herum?
Sieger
Meine Pandas sind beim Öffnen fehlgeschlagen (Dateiname, "rb"), das Schließen von Excel hat das Problem behoben, aber warum?
Niels Tolstrup
0

Dieses Problem trat auf, als ich versehentlich versuchte, mein Python-Modul über die Eingabeaufforderung C:\Windows\System32auszuführen, während sich mein Arbeitsverzeichnis anstelle des üblichen Verzeichnisses befand, in dem ich mein Python-Modul ausführte

Toldry
quelle