我想在我的跨平台 PyQt4 应用程序中添加下一个功能:当用户选择某个文件并在其上选择“删除”操作时,该文件将被移动到回收站文件夹而不是被永久删除。我想我可以使用 Win32 API 或类似的东西找到特定于 Windows 的解决方案,但我想知道是否可以通过 PyQt4 方法在 Ubuntu/Linux 和 MaxOSX 上执行类似的操作。
3 回答
你使用 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")
我想 Qt 确实没有提供跨平台的解决方案,而且在 Linux 中实现垃圾概念也不是一件容易的事,因为它根据使用的文件管理器略有不同。
这是一个讨论Nautilus中的垃圾概念和另一个讨论KDE的站点。
在 Windows 下,您可以像您说的那样使用 Win32 API。此处提供 Python 解决方案。
Mac OS X 将垃圾文件放在 ~/.Trash 中,类似于其他 *NIX 操作系统,但我无法快速谷歌搜索它的任何文档。似乎 OS X 垃圾信息文件是某种二进制格式,而不是像 Linux 中的纯文本。
Symbian 没有桌面概念,因此也没有垃圾桶概念。其他移动平台可能类似。
编辑:超级用户有一些讨论表明 .DS_Store 确实存储了有关已删除文件的信息,但没有关于格式的详细信息。
我知道的最好的 OSX 解决方案使用 Applescript。然而,我并没有发明它,所以我将在这里简单地链接到它。
我觉得有一个模块将 Win32/KDE/OSX 解决方案打包成一个模块并按需导入正确的模块会很好。你最后就是这样解决问题的吗?