E 'possibile creare uno script Python che cancellerà il file .py alla fine della sua esecuzione (auto-eliminazione) in windows?Come eliminare automaticamente gli script al termine dell'esecuzione?
risposta
Non sono sicuro che l'eliminazione di un file mentre è in memoria sarebbe una buona idea. Prova a eseguire un file batch dallo script che chiude il processo di script, quindi elimina il file di script.
Potrebbe esserci un metodo nativo per autodistruggere uno script, ma non ne sono a conoscenza.
EDIT: Ecco un semplice esempio di come si potrebbe raggiungere questo obiettivo con il metodo che ho descritto:
Nello script
# C:\test.py
import os
os.startfile(r"C:\sampleBatch.bat")
Nel lotto
# C:\sampleBatch.bat
TASKKILL /IM "process name" #For me, this was "ipy64.exe" because I use IronPython.
DEL "C:\test.py"
utente non può anche bisogno di uccidere il processo per eliminare il file, ma è più sicuro farlo. Spero che questo ti aiuti.
E c'è un modo per autodistruggersi del file batch dopo aver chiuso lo script sceneggiatura? –
Il file batch dovrebbe essere in grado di distruggere il file alla chiusura del processo. Usare il comando DEL "scriptpathhere" nel file batch per farlo. Inserirò un piccolo frammento in un secondo. – covertCoder
Aggiunto in alcuni esempi di codice per te. – covertCoder
In questo modo il programma non dipende dal sistema operativo.
from os import remove
from sys import argv
remove(argv[0])
I punti bonus: Durante l'analisi argomenti il primo argomento molto che si ottiene in sys.argv è uguale a "path-to-filename/filename.py"
risposta di Neomind sembra fare il trucco Ma se l'eliminazione del file mentre è in memoria ti infastidisce e stai cercando una soluzione Python pura, puoi utilizzare il sottoprocesso per creare un nuovo processo con lo scopo esplicito di eliminare il tuo file di script originale. Qualcosa del genere dovrebbe funzionare:
import sys, subprocess
subprocess.Popen("python -c \"import os, time; time.sleep(1); os.remove('{}');\"".format(sys.argv[0]))
sys.exit(0)
Probabilmente non avrebbe bisogno il timeout in là, ma ho aggiunto solo per assicurarsi che il processo dal copione originale è stato dato abbastanza tempo per chiudersi.
In Python 3, devi aggiungere 'shell = True'. –
v'è un metodo piuttosto semplice:
import os
os.remove("insert the file's path")
Se si sta affrontando problemi, collocare una 'r' prima della boa di partenza citazioni.
Sì, è possibile utilizzare il seguente:
import os
import sys
import subprocess
# execute and remove after run
(Your python code)
# end of file
dir = os.getcwd()
os.remove(dir+'\%s' % sys.argv[0])
Questo script può essere modificata, ovviamente, ma oltre a questo questo dovrebbe funzionare
- 1. Funzione di chiamata al termine dello script
- 2. Fai gdb uscire automaticamente al termine con successo?
- 3. Attendere fino al termine Application.Calculate
- 4. Foreach callback al termine
- 5. Come eliminare automaticamente i risultati del test
- 6. Come rimuovere una vista al termine dell'animazione?
- 7. vim: come eliminare gli spazi fino al primo carattere?
- 8. Come eliminare mockable-android-23.jar automaticamente?
- 9. jQuery: gli script di carico al fine
- 10. Come aspettare fino al termine dell'animazione matplotlib?
- 11. Evento al termine del video di YouTube
- 12. Conteggio righe SQLBulkCopy al termine
- 13. Salvare gli script di shell temporanea ansible invece di eliminare
- 14. Come eliminare completamente gli eseguibili
- 15. Sottolineare callback _.each al termine?
- 16. eliminare automaticamente i file in Google Drive
- 17. Come avviare un file eseguibile al termine dell'installazione correttamente?
- 18. Come eseguire il ciclo in uno script GDB fino al termine del programma?
- 19. aggiorna automaticamente lo script python
- 20. QML: attendere fino al termine delle animazioni
- 21. Rilascia e recupera automaticamente gli indici correnti
- 22. Caricamento griglia utilizzando le coroutine - attendere fino al termine,
- 23. come eliminare automaticamente il file creato in linux con inotify?
- 24. Come eliminare automaticamente i file temporanei in ruby-rails?
- 25. .ASPXAUTH cookie scade al termine della sessione
- 26. Tornare alla schermata iniziale al termine dell'attività
- 27. Chiudi connessione al termine di NSOutputStream
- 28. Come eliminare gli avvisi in CheckStyle?
- 29. Come eliminare tutti gli articoli dalla lista?
- 30. Come eliminare gli account utente in asp.net?
perché si vuole questo? – delnan
Posso pensare ad alcuni motivi;) –
Per aggiornare uno script dall'uso di un socket di rete, ho bisogno di cancellare lo script originale dopo aver ricevuto quello aggiornato –