我想在我的跨平台PyQt4应用程序中添加下一个功能:当用户选择某个文件并选择“删除”操作时,该文件将被移动到回收站文件夹而不是永久删除。我想我可以使用Win32 API或类似的东西找到特定于Windows的解决方案,但我想知道在Ubuntu / Linux和MaxOSX上也可以通过PyQt4方法执行类似的操作。
答案 0 :(得分:54)
你使用Python是一件好事,我刚刚创建了一个库来做这件事:
http://www.hardcoded.net/articles/send-files-to-trash-on-all-platforms.htm
关于PyPI:Send2Trash
<强>安装强>
使用conda:
conda install Send2Trash
使用pip:
pip install Send2Trash
<强>用法强>
删除文件或文件夹
from send2trash import send2trash
send2trash("directory")
答案 1 :(得分:2)
我猜Qt确实没有提供跨平台解决方案,在Linux中实现垃圾概念并不是一项非常简单的任务,因为它根据使用的文件管理器略有不同。
这是一个网站,讨论Nautilus中的垃圾概念,另一个讨论KDE的垃圾概念。
在Windows下,您可以像使用的那样使用Win32 API。 Python solution available here
Mac OS X将已删除的文件放在〜/ .Trash中,类似于其他* NIX操作系统,但我无法快速为Google提供任何文档。似乎OS X垃圾信息文件是某种二进制格式,而不是像Linux中那样的纯文本。
Symbian没有桌面概念,也没有垃圾桶概念。它可能与其他移动平台类似。
编辑:Super User有一些讨论揭示.DS_Store确实存储了有关已删除文件的信息,但没有关于格式的具体信息。
答案 2 :(得分:1)
我知道best OSX solution使用Applescript。但是,我并没有发明它,所以我只想在这里链接到它。
如果有一个将Win32 / KDE / OSX解决方案打包成一个模块的模块会很好,我觉得并按需导入正确的模块。这是你最终解决问题的方法吗?