如何使用PyQt4将文件移动到不同平台的回收站/垃圾箱?
我想给我的跨平台PyQt4应用程序添加一个新功能:当用户选择一个文件并选择“删除”操作时,这个文件应该被移动到回收站,而不是直接被永久删除。我觉得我可以通过Win32 API或者类似的东西找到Windows特定的解决方案,但我想知道在Ubuntu/Linux和MacOSX上,是否也可以通过PyQt4的方法执行类似的操作。
3 个回答
我知道的最好的OSX解决方案是用AppleScript写的。不过,这个方法不是我发明的,所以我就直接在这里给个链接。
我觉得如果能有一个模块,把Win32、KDE和OSX的解决方案都打包在一起,根据需要自动导入合适的那个就好了。你最后是这样解决你的问题的吗?
我想Qt并没有提供一个跨平台的解决方案,而且在Linux上实现“垃圾桶”这个概念并不是一件简单的事,因为这要根据使用的文件管理器的不同而有所区别。
这里有一个网站讨论了在Nautilus中的垃圾桶概念,还有一个关于KDE的。
在Windows上,你可以使用Win32 API,就像你说的那样。这里有一个Python的解决方案。
Mac OS X会把被丢弃的文件放在~/.Trash,和其他*NIX操作系统类似,但我没有找到相关的文档。似乎OS X的垃圾桶信息文件是某种二进制格式,而不是像Linux那样的纯文本。
Symbian没有桌面概念,因此也没有垃圾桶的概念。其他移动平台可能也是这样。
补充:Super User上有一些讨论,揭示了.DS_Store确实存储了关于被丢弃文件的信息,但没有具体说明格式。
你用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")