我正在尝试使用shutil 库将文件移动到回收站。以下是相关代码行,但我遇到了一些奇怪的错误。这两个文件都是本地的,我可以在我的电脑上访问这两个位置。为什么会出现这个错误?因为我从 F:?
运行 Main.pyimport 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\'
要将某些内容发送到回收站,使用
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)
我建议您安装 Send2Trash 模块,它可以跨平台工作。您可以从 PyPi 获取它:https://pypi.org/project/Send2Trash/