How can I move file into Recycle Bin / trash on different platforms using PyQt4?

随声附和 提交于 2019-12-03 04:46:19

问题


I would like to add the next feature to my cross-platform PyQt4 application: when user selects some file and select "remove" action on it that file will be moved to Recycle Bin folder instead of being permantly removed. I think I can find Windows-specific solution using Win32 API or something similar, but I'd like to know does similar operation could be executed on Ubuntu/Linux and MaxOSX as well via PyQt4 methods.


回答1:


It's a good thing you're using Python, I created a library to do just that a while ago:

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

On PyPI: Send2Trash

Installation

Using conda:

conda install Send2Trash

Using pip:

pip install Send2Trash

Usage

Delete file or folders

from send2trash import send2trash
send2trash("directory")



回答2:


I guess there really is no cross-platform solution provided by Qt and it's not a totally trivial task to implement the trash concept in Linux since it's slightly different based on which file manager is in use.

Here's a site discussing the trash concept in Nautilus and another one for KDE.

Under Windows you can use the Win32 API like you said. Python solution available here.

Mac OS X puts the trashed files in ~/.Trash similar to other *NIX OSes, but I couldn't quickly Google any documentation for it. It seems that the OS X trash info file is some kind of binary format and not plain text like in Linux.

Symbian doesn't have a desktop concept and thus no trashcan concept either. It might be similar for other mobile platforms.

EDIT: Super User has some discussion revealing that .DS_Store does indeed store information about trashed files, but no specifics about the format.




回答3:


The best OSX solution I know uses Applescript. I did not, however, invent it, so I shall simply link to it here.

It would be nice to have a module that packaged up the Win32/KDE/OSX solutions into one, i feel, and imported the correct one on demand. Is that how you solved your problem in the end?



来源:https://stackoverflow.com/questions/3628517/how-can-i-move-file-into-recycle-bin-trash-on-different-platforms-using-pyqt4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!