2010-09-02 68 views
22

我想將下一個功能添加到我的跨平臺PyQt4應用程序中:當用戶選擇某個文件並選擇「刪除」操作時,該文件將被移至回收站文件夾,而不是被永久刪除。我想我可以找到使用Win32 API或類似的特定於Windows的解決方案,但我想知道是否可以在Ubuntu/Linux和MaxOSX上通過PyQt4方法執行類似的操作。如何使用PyQt4將文件移動到不同平臺上的回收站/垃圾箱?

回答

46

這是你正在使用Python這樣的好事,我創建了一個庫,做到這一點前一陣子:

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

PyPI上:你的庫Send2Trash

+0

新的基於ctypes的版本看起來很方便。謝謝 – bialix 2011-05-08 10:03:12

+0

這真棒。在OS X上,它與「放回」選項一起工作(右鍵單擊垃圾桶中的文件時)。謝謝! – Patrick 2015-01-22 19:07:24

+1

這應該被添加到標準庫。有沒有人知道提出這種建議的適當機制?我在bugs.python.org上寫了一些東西,但我覺得這不是適合做這件事的地方:http://bugs.python.org/issue24185 – ArtOfWarfare 2015-05-14 03:39:52

2

我想Qt確實沒有提供跨平臺的解決方案,在Linux中實現垃圾概念並不是一項完全無關緊要的任務,因爲它基於使用哪個文件管理器而略有不同。

這是一個網站,討論Nautilus中的垃圾概念,另一個是KDE

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

Mac OS X將垃圾文件放入與其他* NIX操作系統類似的〜/ .Trash文件中,但我無法快速Google搜索它的任何文檔。看來,OS X垃圾信息文件是某種二進制格式,而不是Linux中的純文本文件。

Symbian沒有桌面概念,因此也沒有垃圾桶概念。其他移動平臺可能也是如此。

編輯:Super User有一些討論揭示,.DS_Store確實存儲關於垃圾文件的信息,但沒有關於格式的細節。

1

best OSX solution我知道使用Applescript。然而,我沒有發明它,所以我只是在這裏鏈接到它。

如果有一個模塊將Win32/KDE/OSX解決方案打包成一個模塊,我感覺並按需導入了正確的模塊,那就太好了。這就是你最終如何解決你的問題嗎?