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свойства для запуска от имени администратора.

BenniMcBeno
источник
7
Это Testфайл или папка?
Joachim Isaksson
1
@JoachimIsaksson Это определенно папка, как мы видим в конце строки с ошибкой. Сделайте это ответом.
Олег Припин 03
Test - это папка, за которой следует документ, я могу открыть текстовый документ, используя следующий синтаксис 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или любой другой буквы, которая может быть частью escape-последовательности ...
Тим Пицкер,
хорошо, значит, файл был на флеш-накопителе, а флэш-драйвером была 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строку (с префиксом), чтобы убедиться, что ваш путь не содержит никаких escape-символов, подобных \nэтому, будет преобразован в специальные символы.

a_file = open(r'E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')
Иоахим Исакссон
источник
хорошо, Роджер, удачливый для меня, я почти всегда на Linux, кроме сейчас lol> <, так кого вы мне посоветуете. btw Test - это папка / каталог
BenniMcBeno
2
@bennyboy Зависит от того, чего вы пытаетесь достичь, открывая каталог вместо файла ...?
Joachim Isaksson
16

Для меня я писал в файл, открытый в Excel.

Кай Ван
источник
Мне нужно написать в открытом файле Excel (поскольку в нем есть макрос, который выполняет скрипт Python), как вы его обойдете?
победитель
Мои панды не удалось открыть (имя файла, «rb»), закрытие Excel решило проблему, но почему?
Нильс Толструп
0

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

Толдры
источник