PermissionError: [Errno 13] w Pythonie

83

Dopiero zaczynam uczyć się języka Python i mam problem opisany poniżej:

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\

Wydaje się, że jest to błąd dotyczący uprawnień do pliku, jeśli ktoś może rzucić trochę światła, byłby bardzo wdzięczny.

UWAGA: nie jestem pewien, jak działają pliki Python i Windows, ale jestem zalogowany do systemu Windows jako administrator i folder ma uprawnienia administratora.

Próbowałem zmienić .exewłaściwości, aby działać jako administrator.

BenniMcBeno
źródło
7
Czy Testplik czy folder?
Joachim Isaksson
1
@JoachimIsaksson To zdecydowanie folder, jak widać na końcu linii błędu. Niech to będzie odpowiedź.
Oleh Prypin
Test to folder, w poniższym dokumencie czytamy, że mogę otworzyć dokument tekstowy, używając następującej składni a_file = open ('E: \ Python Win7-64-AMD 3.3 \ Test \ a.txt', encoding = 'utf-8' ) używając tej składni, jak również a_file = open ('E: \ Python Win7-64-AMD 3.3 \ Test', encoding = 'utf-8') daje ten sam błąd.
BenniMcBeno
Nawiasem mówiąc, należy pamiętać, aby używać surowych ciągi ścieżek dla systemu Windows, lub będziesz gryzą źle jeśli nazwa podfolderu powinno się zdarzyć, aby rozpocząć nlub blub inny list, który może być częścią sekwencji ucieczki ...
Tim Pietzcker
ok, więc plik był na dysku flash, a sterownik flash był FAT32, a mój HD to NTFS, więc były to konflikty formatów> <robienie tego lokalnie działa dobrze, dzięki chłopaki
BenniMcBeno

Odpowiedzi:

66

Kiedy robisz;

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

... próbujesz otworzyć katalog jako plik, co może się nie powieść (iw większości systemów plików innych niż UNIX).

Twój inny przykład;

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

powinien działać dobrze, jeśli masz tylko pozwolenie a.txt. Możesz jednak chcieć użyć nieprzetworzonego ( r-prefixed) ciągu, aby upewnić się, że twoja ścieżka nie zawiera żadnych znaków ucieczki, takich jak \nten, zostanie przetłumaczona na znaki specjalne.

a_file = open(r'E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')
Joachim Isaksson
źródło
OK Roger szczęśliwy dla mnie jestem prawie zawsze na Linuksie, z wyjątkiem teraz lol> <, więc kogo sugerujesz, żebym to zrobił. btw Test to folder / katalog
BenniMcBeno
2
@bennyboy Zależy od tego, co próbujesz osiągnąć, otwierając katalog zamiast pliku ...?
Joachim Isaksson
16

U mnie pisałem do pliku otwieranego w Excelu.

Kai Wang
źródło
Muszę napisać na otwartym pliku Excela (ponieważ ma makro, które wykonuje skrypt Pythona), jak to obejść?
zwycięzca
Moje pandy nie mogły się otworzyć (nazwa pliku, „rb”), zamknięcie programu Excel rozwiązało problem, ale dlaczego?
Niels Tolstrup
0

Napotkałem ten problem, gdy przypadkowo spróbowałem uruchomić mój moduł Pythona za pomocą wiersza poleceń, podczas gdy mój katalog roboczy był C:\Windows\System32zamiast zwykłego katalogu, z którego uruchamiam mój moduł Pythona

Toldry
źródło