PermissionError: [Errno 13] у python


83

Я тільки починаю вивчати деякі python, і у мене виникає проблема, як зазначено нижче:

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\

Здається, помилка дозволу файлу, якщо хтось може засвітити світло, це буде вдячна.

ПРИМІТКА: не знаю, як працюють файли Python та Windows, але я ввійшов до Windows як адміністратор, і папка має дозволи адміністратора.

Я спробував змінити .exeвластивості, щоб працювати як адміністратор.


7
Є чи Testфайл або папка?
Йоахім Ісакссон

1
@JoachimIsaksson Це точно папка, як ми бачимо в кінці рядка помилки. Зробіть це відповіддю.
Олег Припін

Тест - це папка, документ, який читається нижче, я можу відкрити текстовий документ, використовуючи такий синтаксис a_file = open ('E: \ Python Win7-64-AMD 3.3 \ Test \ a.txt', encoding = 'utf-8' ) використання цього синтаксису також як a_file = open ('E: \ Python Win7-64-AMD 3.3 \ Test', encoding = 'utf-8') дає мені ту ж помилку.
BenniMcBeno

До речі, НЕ забудьте використовувати сирі рядки для Windows , імен шляхів, або ви будете укушені погано , якщо ім'я папки повинно статися , щоб почати з nабо bабо будь-яке інше лист , яке може бути частиною послідовності втечі ...
Тім Pietzcker

добре, значить, файл був на флешці, а флеш-драйвер - FAT32, а мій HD - NTFS, тож це були конфлікти форматів> <робити це локально добре працює, дякую хлопці
BenniMcBeno

Відповіді:


67

Коли робите;

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

... Ви намагаєтесь відкрити каталог як файл, який може (і в більшості файлових систем, що не належать до UNIX) вийти з ладу.

Ваш інший приклад;

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

має працювати добре, якщо у вас просто є дозвіл на a.txt. Можливо, ви захочете використовувати необроблений ( r-префіксований) рядок, щоб переконатись, що ваш шлях не містить таких символів, \nщо перекладаються на спеціальні символи.

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

нормально, Роджеру, мені пощастило, я майже завжди працюю на Linux, окрім тепер, ха-ха> <, так кому ви пропонуєте це зробити. btw Test - це папка / каталог
BenniMcBeno

2
@bennyboy Залежить від того, чого ви намагаєтесь досягти, відкривши каталог замість файлу ...?
Йоахім Ісакссон

16

Для мене я писав у файл, який відкривається в Excel.


Мені потрібно писати у відкритому файлі Excel (оскільки в ньому є макрос, який виконує скрипт python), як його обійти?
віктор

Мої панди не вдалося відкрити (ім'я файлу, "rb"), закриття Excel вирішило проблему, але чому?
Niels Tolstrup

0

Я зіткнувся з цією проблемою, коли випадково спробував запустити модуль python через командний рядок, коли мій робочий каталог знаходився C:\Windows\System32замість звичайного каталогу, з якого я запускаю модуль python

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.