35

我想在我的跨平台 PyQt4 应用程序中添加下一个功能:当用户选择某个文件并在其上选择“删除”操作时,该文件将被移动到回收站文件夹而不是被永久删除。我想我可以使用 Win32 API 或类似的东西找到特定于 Windows 的解决方案,但我想知道是否可以通过 PyQt4 方法在 Ubuntu/Linux 和 MaxOSX 上执行类似的操作。

4

3 回答 3

73

你使用 Python 是件好事,我在不久前创建了一个库来做这件事:

http://www.hardcoded.net/articles/send-files-to-trash-on-all-platforms.htm

在 PyPI 上:Send2Trash

安装

使用康达:

conda install Send2Trash

使用点子:

pip install Send2Trash

用法

删除文件或文件夹

from send2trash import send2trash
send2trash("directory")
于 2011-01-23T10:37:34.420 回答
2

我想 Qt 确实没有提供跨平台的解决方案,而且在 Linux 中实现垃圾概念也不是一件容易的事,因为它根据使用的文件管理器略有不同。

这是一个讨论Nautilus中的垃圾概念和另一个讨论KDE的站点。

在 Windows 下,您可以像您说的那样使用 Win32 API。此处提供 Python 解决方案

Mac OS X 将垃圾文件放在 ~/.Trash 中,类似于其他 *NIX 操作系统,但我无法快速谷歌搜索它的任何文档。似乎 OS X 垃圾信息文件是某种二进制格式,而不是像 Linux 中的纯文本。

Symbian 没有桌面概念,因此也没有垃圾桶概念。其他移动平台可能类似。

编辑:超级用户有一些讨论表明 .DS_Store 确实存储了有关已删除文件的信息,但没有关于格式的详细信息。

于 2010-09-02T18:53:54.983 回答
1

我知道的最好的 OSX 解决方案使用 Applescript。然而,我并没有发明它,所以我将在这里简单地链接到它。

我觉得有一个模块将 Win32/KDE/OSX 解决方案打包成一个模块并按需导入正确的模块会很好。你最后就是这样解决问题的吗?

于 2011-01-23T06:49:19.637 回答