提问者:小点点

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's 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


共3个答案

匿名用户

如果您试图打开一个文件,但您的路径是一个文件夹,就会发生这种情况。

这很容易发生错误。

要防御这种情况,请使用:

import os

path = r"my/path/to/file.txt"
assert os.path.isfile(path)
with open(path, "r") as f:
    pass

如果路径实际上是文件夹,则断言将失败。

匿名用户

在Windows上实现管理员执行权限主要有三种方法。

  1. 作为管理员运行从cmd.exe
  2. 创建快捷方式以提升权限执行文件
  3. 更改Python可执行文件的权限(不推荐)

A) 正在运行cmd。exeas和admin

由于在Windows中没有sudo命令,因此您必须以管理员身份运行终端(cmd.exe),才能达到与sudo相当的权限级别。您可以通过两种方式执行此操作:

>

  • 查找cmd。在C:\Windows\system32

通过快捷键

  • 按windows键(通常在altctrl之间)X
  • 将出现一个包含各种管理员任务的小弹出列表。
  • 选择命令提示符(管理员)
  • 前往您的项目目录
  • 运行你的程序

通过这样做,您将以管理员身份运行,因此此问题不应持续存在

B) 创建具有提升权限的快捷方式

  1. python创建快捷方式。exe
  2. 右键单击快捷方式并选择属性
  3. 将快捷方式目标更改为类似于“C:\path\u to\python.exe”C:\path\u to\your\u脚本的内容。py“
  4. 在快捷方式的属性面板中单击“高级”,然后单击“以管理员身份运行”选项

delphifirst对此问题的回答

C) 更改python可执行文件的权限(不推荐)

这是可能的,但我强烈反对你这样做。

它只需要找到python可执行文件,并将其设置为每次以管理员身份运行。可能会导致文件创建(仅限管理员)或不需要管理员身份才能运行的模块出现问题。

匿名用户

请确保先关闭您尝试写入的文件。