将文件移至回收站

问题描述 投票:0回答:4

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

运行 Main.py
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 env\Scripts\python.exe“C:\Program Files\JetBrains\PyCharm 社区版 2020.1\plugins\python-ce\helpers\pydev\pydevd.py”--multiproc --qt-support =auto --client 127.0.0.1 --端口 54648 --文件 F:\Python\Main.py 连接到 pydev 调试器(内部版本 203.5981.165) 回溯(最近一次调用最后一次): 文件“C:\Users\User\AppData\Local\Programs\Python\Python38\lib\shutil.py”,第 788 行,在 move os.rename(src,real_dst) PermissionError: [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\'

python shutil
4个回答
14
投票

要将某些内容发送到回收站,使用

send2trash
要容易得多。它是跨平台的并且非常易于使用。

您可以使用以下命令安装它:

pip install Send2Trash

然后就可以使用了:

from send2trash import send2trash
send2trash(filename)

3
投票

我使用的是 Windows 10,

send2trash
仅接受带有反斜杠
\
的路径。当您尝试使用正斜杠
OSError: [WinError xxxxxxxxxx] The parameter is incorrect
传递目录时,它会抛出
/

此代码应将

/
替换为
\
,并修复错误:

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

2
投票

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


0
投票

send2trash 是正确的选择。对于那些遇到路径问题的人,我建议添加 PathLib,它会通过自动更正平台来愉快地解决您的

/
\
问题。我在每个需要删除文件的脚本中都使用这两个。

© www.soinside.com 2019 - 2024. All rights reserved.