如何使用PyQt4将文件移动到不同平台上的回收站/垃圾箱?

问题描述 投票:27回答:3

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

python qt4 cross-platform pyqt4 recycle-bin
3个回答
54
投票

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

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

关于PyPI:Send2Trash

安装

使用conda:

conda install Send2Trash

使用点子:

pip install Send2Trash

用法

删除文件或文件夹

from send2trash import send2trash
send2trash("directory")

2
投票

我猜Qt确实没有提供跨平台解决方案,在Linux中实现垃圾概念并不是一件非常简单的任务,因为它根据使用的文件管理器略有不同。

这是一个讨论Nautilus垃圾概念的网站,另一个讨论KDE的垃圾概念。

在Windows下,你可以像你说的那样使用Win32 API。 Python solution available here

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

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

编辑:Super User有一些讨论揭示.DS_Store确实存储有关已删除文件的信息,但没有关于格式的具体信息。


1
投票

我知道的best OSX solution使用Applescript。然而,我没有发明它,所以我将在这里简单地链接到它。

如果有一个模块将Win32 / KDE / OSX解决方案打包成一个,我觉得并按需导入正确的模块会很好。这到底是怎么解决你的问题的?

© www.soinside.com 2019 - 2024. All rights reserved.