移动文件到回收站

Moving file to Recycle Bin

我正在尝试使用 shutil 库将文件移动到回收站。以下是相关的代码行,但我遇到了一个奇怪的错误。这两个文件都是本地文件,我可以在我的 PC 上访问这两个位置。为什么会出现这个错误?因为我运行Main.py它来自F:?

import shutil
# Path to folder where files should be trashed
dump_folder = r"C:$Recycle.Bin\"
file_name = "C:\Storage\\statuti.docx"

# Move it to storage directory
shutil.move(file_name, dump_folder)

错误信息

F:\Python\Project\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2020.1\plugins\python-ce\helpers\pydev\pydevd.py" --multiproc --qt-support=auto --client 127.0 .0.1 --port 54648 --file F:\Python\Main.py 连接到 pydev 调试器(内部版本 203.5981.165) 追溯(最近一次通话): 移动文件“C:\Users\User\AppData\Local\Programs\Python\Python38\lib\shutil.py”,第 788 行 os.rename(src, real_dst) 权限错误:[WinError 5] 访问被拒绝:'C:\Storage\statuti.docx' -> 'C:\Recycle.Bin\'

在处理上述异常的过程中,又发生了一个异常:

回溯(最后一次调用): 复制文件中的文件“C:\Users\User\AppData\Local\Programs\Python\Python38\lib\shutil.py”,第 261 行 使用 open(src, 'rb') 作为 fsrc,open(dst, 'wb') 作为 fdst: OSError:[Errno 22] 无效参数:'C:\Recycle.Bin\'

我建议您安装跨平台工作的 Send2Trash 模块。您可以从 PyPi 获取它:https://pypi.org/project/Send2Trash/

要将某些东西发送到回收站,使用起来要容易得多 send2trash。它是跨平台的,非常容易使用。

你可以安装它:

pip install Send2Trash

那你就可以用了:

from send2trash import send2trash
send2trash(filename)

我正在使用 Windows 10,而 send2trash 只接受带反斜杠的路径 \。当您尝试传递带有正斜杠 /.

的目录时,它会抛出 OSError: [WinError xxxxxxxxxx] The parameter is incorrect

此代码应将 / 替换为 \,并修复错误:

path_to_delete = path_to_delete.replace("/", "\")
send2trash(path_to_delete)