PermissionError: [Errno 13] Разрешение отклонено

Я получаю эту ошибку:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "C:/Users/Marc/Documents/Programmation/Python/Llamachat/Llamachat/Llamachat.py", line 32, in download
with open(place_to_save, 'wb') as file:
PermissionError: [Errno 13] Permission denied: '/goodbye.txt'

При запуске:

def download():
    # get selected line index
    index = films_list.curselection()[0]
    # get the line text
    selected_text = films_list.get(index)
    directory = filedialog.askdirectory(parent=root, 
                                        title="Choose where to save your movie")
    place_to_save = directory + '/' + selected_text
    print(directory, selected_text, place_to_save)
    with open(place_to_save, 'wb') as file:
        connect.retrbinary('RETR ' + selected_text, file.write)
    tk.messagebox.showwarning('File downloaded', 
                              'Your movie has been successfully downloaded!' 
                              '\nAnd saved where you asked us to save it!!')

Может ли кто-нибудь сказать мне, что я делаю неправильно? благодаря

Спецификации: Python 3.4.4 x86 Windows 10 x64

Ответы

Ответ 1

РЕДАКТИРОВАТЬ

Я вижу немного активности в своем ответе, поэтому решил немного улучшить его для тех, у кого проблема

Есть в основном три основных способа достижения администратора execution привилегий на Windows.

  1. Выполняется как admin из cmd.exe
  2. Создание ярлыка для выполнения файла с повышенными привилегиями
  3. Изменение разрешений на исполняемый файл python (не рекомендуется)

1) Запуск cmd.exe as и admin

Поскольку в Windows нет команды sudo вы должны запустить терминал (cmd.exe) в качестве администратора, чтобы достичь уровня разрешений, эквивалентного sudo. Вы можете сделать это двумя способами:

  1. Вручную

    • Найти cmd.exe в C:\Windows\system32
    • Щелкните его правой кнопкой мыши
    • Выберите Run as Administrator
    • Затем он откроет командную строку в каталоге C:\Windows\system32
    • Поездка в каталог проекта
    • Запустите программу
  2. Через клавиши быстрого доступа

    • Нажмите клавишу Windows (обычно между alt и ctrl) + X
    • Появится небольшой всплывающий список, содержащий различные задачи администратора.
    • Выберите " Command Prompt (Admin)
    • Поездка в каталог проекта
    • Запустите программу

Поступая таким образом, вы используете Admin, чтобы эта проблема не сохранялась

2) Создание ярлыка с повышенными привилегиями

  1. Создать ярлык для python.exe
  2. Выделите ярлык правой кнопкой мыши и выберите " Properties
  3. Измените цель ярлыка на нечто вроде "C:\path_to\python.exe" C:\path_to\your_script.py"
  4. Нажмите "продвинутый" на панели свойств ярлыка и нажмите "Запуск от имени администратора",

Ответ, внесенный delphifirst в этом вопросе

3) Изменение разрешений на исполняемый файл python (не рекомендуется)

Это возможность, но я сильно отговариваю вас от этого.

Он просто включает в себя поиск исполняемого файла python и настройку его на запуск как администратора каждый раз. Может и, вероятно, вызовет проблемы с такими файлами, как создание файлов (они будут только администратором) или, возможно, модули, для которых НЕ требуется запуск администратора.

Ответ 2

Измените разрешения каталога, который вы хотите сохранить, чтобы все пользователи имели права на чтение и запись.

Ответ 3

Это случилось со мной на машине под Windows с использованием Pycharm.

Исправление: щелкните правой кнопкой мыши приложение PyCharm и запустите его как администратор.

Ответ 4

Проблема здесь в том, что у вашего пользователя нет необходимых прав/разрешений для открытия файла, это означает, что вам нужно предоставить некоторые административные привилегии вашему python ide перед выполнением этой команды.

Поскольку вы являетесь пользователем Windows, вам просто нужно щелкнуть правой кнопкой мыши на python ide =>, выбрать опцию "Запуск от имени администратора" и затем запустить вашу команду.

И если вы используете командную строку для запуска кодов, сделайте то же самое, откройте командную строку с правами администратора.

Ответ 5

Проблема может быть в пути к файлу, который вы хотите открыть. Попробуйте распечатать путь и посмотреть, нормально ли у меня была похожая проблема

def scrap(soup,filenm):
htm=(soup.prettify().replace("https://","")).replace("http://","")
if ".php" in filenm or ".aspx" in filenm or ".jsp" in filenm:
    filenm=filenm.split("?")[0]
    filenm=("{}.html").format(filenm)
    print("Converted a  file into html that was not compatible")

if ".aspx" in htm:
    htm=htm.replace(".aspx",".aspx.html")
    print("[process]...conversion fron aspx")
if ".jsp" in htm:
    htm=htm.replace(".jsp",".jsp.html")
    print("[process]..conversion from jsp")
if ".php" in htm:
    htm=htm.replace(".php",".php.html")
    print("[process]..conversion from php")

output=open("data/"+filenm,"w",encoding="utf-8")
output.write(htm)
output.close()
print("{} bits of data written".format(len(htm)))

но после добавления этого кода:

nofilenametxt=filenm.split('/')
nofilenametxt=nofilenametxt[len(nofilenametxt)-1]
if (len(nofilenametxt)==0):
    filenm=("{}index.html").format(filenm)

Работало отлично

Ответ 6

Я столкнулся с подобной проблемой. Я использую Anaconda на окнах, и я решил это следующим образом: 1) найти "Anaconda prompt" из меню "Пуск" 2) Щелкните правой кнопкой мыши и выберите "Запуск от имени администратора" 3) Следуйте инструкциям по установке...

Это касается вопросов разрешения

Ответ 7

Дважды проверьте и убедитесь, что файл, в который вы пытаетесь записать, не открыт, или какая-то программа в фоновом режиме не удерживает этот файл/данные. Это была проблема для меня.

Ответ 8

Убедитесь, что файл, который вы пытаетесь записать, сначала закрыт.

Ответ 9

PermissionError: [Errno 13] В доступе отказано:

Я столкнулся с вышеупомянутой ошибкой, работая над Excel, и мой Excel был открыт, затем я закрыл и попытался запустить свой код. Это сработало для меня.

Ваш файл должен быть открыт. Закройте файл и снова запустите код, он должен работать.

Ответ 10

у меня есть вопрос?? код:

импорт pyttsx3

engine = pyttsx3.init('sapi5') голоса = engine.getProperty('голоса') печать (голоса)

вывод: "C:\Program Files (x86)\Python37-32\python.exe" C: /Users/ASUS/PycharmProjects/experiment/main2.py Traceback (последний вызов был последним): файл "C:\Program Files ( x86)\Python37-32\lib\site-packages\pyttsx3__init __. py ", строка 20, в файле init eng = _activeEngines [driverName]" C:\Program Files (x86)\Python37-32\lib\weakref.py " строка 137 в getitem o = self.datakey KeyError: 'sapi5'

Во время обработки вышеупомянутого исключения произошло другое исключение:

Трассировка (последний вызов был последним): Файл "C: /Users/ASUS/PycharmProjects/experiment/main2.py", строка 5, в engine = pyttsx3.init('sapi5') Файл "C:\Program Files (x86)\Python37-32\lib\site-packages\pyttsx3__init __. Py ", строка 22, в init eng = Engine (имя-драйвера, отладка) Файл" C:\Program Files (x86)\Python37-32\lib\site-packages\pyttsx3\engine.py ", строка 30, в init self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug) Файл" C:\Program Files (x86)\Python37-32\lib\site- packages\pyttsx3\driver.py ", строка 52, в init self._driver = self._module.buildDriver(weakref.proxy(self)) Файл" C:\Program Files (x86)\Python37-32\lib\site- packages\pyttsx3\drivers\sapi5.py ", строка 23, в buildDriver возвращает файл SAPI5Driver (прокси-сервер)" C:\Program Files (x86)\Python37-32\lib\site-packages\pyttsx3\drivers\sapi5.py ", строка 28, в файле init self._tts = win32com.client.Dispatch('SAPI.SPVoice') "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client__init __. py", строка 96, в Диспетчерском возврате Wra pDispatch (dispatch, userName, resultCLSID, typeinfo, clsctx = clsctx) Файл "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client__init.py", строка 37, в __WrapDispatch klass = gencache.GetClassForCLSID(resultCLSID) Файл "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py", строка 183, в файле GetClassForCLSID mod = GetModuleForCLSID (clsid), файл "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py ", строка 226, в GetModuleForCLSID mod = GetModuleForTypelib (typelibCLSID, lcid, major, minor) Файл" C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py ", строка 266, в GetModuleForTypelib AddModuleToCache (typelibCLSID, lcid, major, minor) Файл" C:\Program Files (x86)\Python37 " -32\lib\site-packages\win32com\client\gencache.py ", строка 573, в файле AddModuleToCache _SaveDicts()" C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py ", строка 69, в _SaveDicts f = open (os.path.join(Ge tGeneratePath(), "dicts.dat"), "wb") PermissionError: [Errno 13] Отказано в доступе: 'C:\Users\ASUS\AppData\Local\Temp\gen_py\3.7\dicts.dat'

Процесс завершен с кодом выхода 1