web-dev-qa-db-ja.com

PyQt4を使用して、さまざまなプラットフォームのごみ箱/ごみ箱にファイルを移動するにはどうすればよいですか?

クロスプラットフォームのPyQt4アプリケーションに次の機能を追加したいと思います。ユーザーがファイルを選択して「削除」アクションを選択すると、そのファイルは完全に削除されるのではなく、ごみ箱フォルダーに移動されます。 Win32 APIなどを使用してWindows固有のソリューションを見つけることができると思いますが、Ubuntu/LinuxおよびMaxOSXでもPyQt4メソッドを介して同様の操作を実行できることを知りたいです。

30
bialix

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")
55
Virgil Dupras

Qtが提供するクロスプラットフォームのソリューションは実際にはないと思います。また、使用しているファイルマネージャーによって少し異なるため、Linuxでゴミ箱の概念を実装するのはまったく簡単な作業ではありません。

これは Nautilus のゴミ箱の概念と [〜#〜] kde [〜#〜] のゴミ箱の概念について議論しているサイトです。

Windowsでは、あなたが言ったようにWin32APIを使用できます。 Pythonソリューションはこちらから入手できます

Mac OS Xは、他の* NIX OSと同様に、ゴミ箱に移動したファイルを〜/ .Trashに配置しますが、そのドキュメントをすぐにGoogleで検索することはできませんでした。 OS Xのゴミ箱情報ファイルはある種のバイナリ形式であり、Linuxのようなプレーンテキストではないようです。

Symbianにはデスクトップの概念がないため、ゴミ箱の概念もありません。他のモバイルプラットフォームでも同様の場合があります。

編集: スーパーユーザー .DS_Storeが実際にゴミ箱に入れられたファイルに関する情報を保存していることを明らかにするいくつかの議論がありますが、形式に関する詳細はありません。

2
teukkam

最高のOSXソリューション 私はApplescriptを使用していることを知っています。しかし、私はそれを発明しなかったので、ここで簡単にリンクします。

Win32/KDE/OSXソリューションを1つにパッケージ化し、オンデマンドで正しいものをインポートするモジュールがあればいいと思います。それが最終的に問題を解決した方法ですか?

1
dan mackinlay