2010-09-02 14 views
22

Vorrei aggiungere la prossima funzionalità alla mia applicazione PyQt4 multipiattaforma: quando l'utente seleziona un file e seleziona "rimuovi" azione su di esso quel file verrà spostato nella cartella Cestino invece di essere rimosso in modo permanente. Penso di poter trovare una soluzione specifica per Windows utilizzando l'API Win32 o qualcosa di simile, ma mi piacerebbe sapere che un'operazione simile potrebbe essere eseguita su Ubuntu/Linux e MaxOSX e tramite i metodi PyQt4.Come posso spostare il file nel Cestino/cestino su piattaforme diverse usando PyQt4?

risposta

46

E 'una buona cosa che si sta utilizzando Python, ho creato una libreria di fare proprio questo qualche tempo fa:

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

Su PyPI: Send2Trash

+0

Nuova versione ctypes basata su tua libreria sembra molto utile. Grazie – bialix

+0

Questo è fantastico. Su OS X funziona con l'opzione 'Metti indietro' (quando si fa clic con il tasto destro su un file nel cestino). Grazie! – Patrick

+1

Questo dovrebbe essere aggiunto alla libreria standard. Qualcuno conosce il meccanismo corretto per fare quel tipo di proposta? Ho scritto qualcosa su bugs.python.org, ma non mi sembra che sia il posto giusto per farlo: http://bugs.python.org/issue24185 – ArtOfWarfare

2

Immagino che non ci sia davvero una soluzione cross-platform fornita da Qt e non è un compito assolutamente banale implementare il concetto di cestino in Linux poiché è leggermente diverso in base a quale file manager è in uso.

Ecco un sito che discute il concetto di cestino in Nautilus e un altro per KDE.

In Windows è possibile utilizzare l'API Win32 come hai detto. Python solution available here.

Mac OS X inserisce i file cestinati in ~/.Trash in modo simile ad altri * sistemi operativi NIX, ma non ho potuto rapidamente consultare la documentazione di Google. Sembra che il file di informazioni sul cestino di OS X sia una specie di formato binario e non un testo semplice come in Linux.

Symbian non ha un concetto di desktop e quindi nemmeno un concetto di cestino. Potrebbe essere simile per altre piattaforme mobili.

MODIFICA: Super User ha alcune discussioni che rivelano che .DS_Store memorizza effettivamente le informazioni sui file nel cestino, ma non specifiche sul formato.

1

Il best OSX solution Lo so utilizza Applescript. Tuttavia, non l'ho inventato, quindi vi collegherò semplicemente qui.

Sarebbe bello avere un modulo che comprimesse le soluzioni Win32/KDE/OSX in uno, credo, e ne ha importato uno corretto su richiesta. È così che hai risolto il tuo problema alla fine?

Problemi correlati