将文件移动到回收站

9

我正在尝试使用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\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) Traceback (most recent call last): File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 788, in move os.rename(src, real_dst) PermissionError: [WinError 5] 拒绝访问。: 'C:\Storage\\statuti.docx' -> 'C:\Recycle.Bin\\'

在处理以上异常时,发生了另一个异常:

Traceback (most recent call last): File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 261, in copyfile with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst: OSError: [Errno 22] 参数无效: 'C:\Recycle.Bin\\'


使用Send2Trash模块-https://pypi.org/project/Send2Trash/ - Mario Camilleri
你只针对Windows平台吗? - Countour-Integral
在 dumpfolder 路径中有两个反斜杠。我没有检查,但那看起来像是一个问题。'C:\Recycle.Bin\' - Aman
是的,只针对Windows操作系统。 - Matiss Zuravlevs
3个回答

14

要将某个东西放入回收站,使用 send2trash 更加简单。它是跨平台的,并且非常易于使用。

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

pip install Send2Trash

然后您可以使用它:

from send2trash import send2trash
send2trash(filename)

1
不行,它不起作用。file_name = "C:\Storage\\statuti.docx",send2trash(filename)。文件仍然在原地,回收站里没有任何东西。也没有错误信息。调试返回-1,运行返回0。 - Matiss Zuravlevs
问题与四个反斜杠有关。你应该使用 "C:\\Storage\\statuti.docx" 代替。 - Michael Trikergiotis
1
感谢您的帮助,我接受了您的答案。为了未来的任何新手,我留下以下几行代码:str_fn = filename, str_fn = str_fn.replace("\\", "\"), send2trash(str_fn) - Matiss Zuravlevs

3
我正在使用Windows 10,但是send2trash只接受带反斜杠\的路径。如果你尝试传递一个带正斜杠/的目录,它会抛出OSError: [WinError xxxxxxxxxx] 参数不正确错误。
下面的代码将替换/\,并修复错误:
path_to_delete = path_to_delete.replace("/", "\\")
send2trash(path_to_delete)

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接