我得到这个错误:
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
如果您试图打开一个文件,但您的路径是一个文件夹,就会发生这种情况。
这很容易发生错误。
要防御这种情况,请使用:
import os
path = r"my/path/to/file.txt"
assert os.path.isfile(path)
with open(path, "r") as f:
pass
如果路径实际上是文件夹,则断言将失败。
在Windows上实现管理员执行
权限主要有三种方法。
cmd.exe
A) 正在运行cmd。exe
as和admin
由于在Windows中没有sudo
命令,因此您必须以管理员身份运行终端(cmd.exe
),才能达到与sudo
相当的权限级别。您可以通过两种方式执行此操作:
>
cmd。在C:\Windows\system32
通过快捷键
alt
和ctrl
之间)X
。命令提示符(管理员)
通过这样做,您将以管理员身份运行,因此此问题不应持续存在
B) 创建具有提升权限的快捷方式
python创建快捷方式。exe
“C:\path\u to\python.exe”C:\path\u to\your\u脚本的内容。py“
delphifirst对此问题的回答
C) 更改python可执行文件的权限(不推荐)
这是可能的,但我强烈反对你这样做。
它只需要找到python
可执行文件,并将其设置为每次以管理员身份运行。可能会导致文件创建(仅限管理员)或不需要管理员身份才能运行的模块出现问题。
请确保先关闭您尝试写入的文件。