Come posso spostare file in Cestino / trash su diverse piattaforme che utilizzano PyQt4?
-
26-09-2019 - |
Domanda
Vorrei aggiungere la funzionalità accanto al mio cross-piattaforma applicativa PyQt4: quando l'utente seleziona un certo file e selezionare l'azione "Rimuovi" su di esso che il file verrà spostato nella cartella Cestino anziché essere rimosso permantly. Credo di poter trovare una soluzione specifica per Windows utilizzando API Win32 o qualcosa di simile, ma mi piacerebbe sapere non simile operazione potrebbe essere eseguita su Ubuntu / Linux e MaxOSX pure attraverso metodi PyQt4.
Soluzione
E 'una buona cosa che si sta utilizzando Python, ho creato una libreria di fare proprio questo qualche tempo fa:
http: //www.hardcoded. / articoli / net send-files-to-trash-on-all-platforms.htm
In PyPI: Send2Trash
Installazione
Utilizzando Conda:
conda install Send2Trash
Utilizzando pip:
pip install Send2Trash
Utilizzo
file o cartelle Elimina
from send2trash import send2trash
send2trash("directory")
Altri suggerimenti
Credo che non c'è davvero nessuna soluzione multi-piattaforma fornita da Qt e non è un compito del tutto banale per l'attuazione del concetto di spazzatura in Linux dal momento che è leggermente diverso in base al quale gestore di file è in uso.
Ecco un sito discutendo il concetto di trash in Nautilus e un altro per KDE .
In Windows è possibile utilizzare l'API Win32 come hai detto. Python disponibile qui .
Mac OS X mette i file cestinati in ~ / Trash simile ad altri sistemi operativi * nix, ma non ho potuto rapidamente Google documentazione per esso. Sembra che il file di informazioni spazzatura OS X è una sorta di formato binario e il testo non pianura come in Linux.
Symbian non ha un concetto del desktop e il concetto quindi non bidone neanche. Potrebbe essere simile per altre piattaforme mobili.
EDIT: Super utente ha qualche discussione rivelando che .DS_Store effettivamente memorizzare le informazioni sui file cestinati, ma non specifiche sul formato.
Il soluzione migliore OSX so usi Applescript. Non ho, però, invento, quindi mi limiterò link ad esso qui.
Sarebbe bello avere un modulo che confezionato le soluzioni Win32 / KDE / OSX in uno, mi sento, ed importato quella corretta su richiesta. È così che risolto il problema, alla fine?