Ho appena iniziato con Python. Quando eseguo un file di script Python su Windows, viene visualizzata la finestra di output ma scompare istantaneamente. Ho bisogno che rimanga lì in modo da poter analizzare il mio output. Come posso tenerlo aperto?
Ho appena iniziato con Python. Quando eseguo un file di script Python su Windows, viene visualizzata la finestra di output ma scompare istantaneamente. Ho bisogno che rimanga lì in modo da poter analizzare il mio output. Come posso tenerlo aperto?
Risposte:
Hai alcune opzioni:
Esegui il programma da un terminale già aperto. Apri un prompt dei comandi e digita:
python myscript.py
Perché funzioni, hai bisogno dell'eseguibile python nel tuo percorso. Controlla come modificare le variabili di ambiente su Windows e aggiungi C:\PYTHON26
(o qualunque altra directory in cui hai installato Python).
Quando il programma termina, ti riporterà al prompt cmd invece di chiudere la finestra.
Aggiungi il codice per attendere alla fine del tuo script. Per Python2, aggiungendo ...
raw_input()
... alla fine dello script fa aspettare la Enterchiave. Questo metodo è fastidioso perché è necessario modificare lo script e ricordare di averlo rimosso al termine. Particolarmente fastidioso durante il test di script di altre persone. Per Python3, utilizzare input()
.
Usa un editor che fa una pausa per te. Alcuni editor preparati per Python si metteranno automaticamente in pausa dopo l'esecuzione. Altri editor consentono di configurare la riga di comando utilizzata per eseguire il programma. Trovo particolarmente utile configurarlo come " python -i myscript.py
" durante l'esecuzione. Ciò ti porta a una shell Python dopo la fine del programma, con l'ambiente del programma caricato, quindi puoi giocare ulteriormente con le variabili e chiamare funzioni e metodi.
cmd /k
è il modo tipico di aprire qualsiasi applicazione console (non solo Python) con una finestra console che rimarrà dopo la chiusura dell'applicazione. Il modo più semplice in cui posso pensare di farlo è premere Win + R, digitare cmd /k
e quindi trascinare e rilasciare lo script desiderato nella finestra di dialogo Esegui.
cmd /k
è solo per Windows. Non posso fare a meno di un'alternativa per Mac, scusa.
Avvia lo script dalla finestra cmd già aperta o alla fine dello script aggiungi qualcosa del genere, in Python 2:
raw_input("Press enter to exit ;)")
Oppure, in Python 3:
input("Press enter to exit ;)")
Per tenere aperta la finestra in caso di eccezione (ancora, durante la stampa dell'eccezione)
if __name__ == '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
print "Press Enter to continue ..."
raw_input()
Per mantenere la finestra aperta in ogni caso:
if __name__ == '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
finally:
print "Press Enter to continue ..."
raw_input()
Per Python3 dovrai usare input()
al posto diraw_input()
, e ovviamente adattare le print
dichiarazioni.
if __name__ == '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
print("Press Enter to continue ...")
input()
Per mantenere la finestra aperta in ogni caso:
if __name__ == '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
finally:
print("Press Enter to continue ...")
input()
è possibile combinare le risposte prima: (per l'utente Notepad ++)
premere F5 per eseguire lo script corrente e digitare il comando:
cmd /k python -i "$(FULL_CURRENT_PATH)"
in questo modo rimani in modalità interattiva dopo aver eseguito il tuo script python Notepad ++ e sei in grado di giocare con le tue variabili e così via :)
Crea un file batch di Windows con queste 2 righe:
python your-program.py
pause
import os os.system("pause")
alla fine del .py
file
raw_input
o altra immondizia sono semplicemente sbagliate. Entrambi i tipi vostro comando sulla riga di comando il modo in Python si aspetta che tu, o utilizzare il linguaggio batch che è stato fornito con MS-DOS per esattamente questo scopo dal agosto 1981 .
python %*
usalo e impostalo come uno dei programmi "apri con" in modo da poter fare clic con il pulsante destro del mouse su un file .py per aprire una finestra di pausa o anche metterlo nella mia cartella Anaconda3 (in PERCORSO) come py_pause.bat così ora Posso correre py_pause my-prog.py all my args
dalla linea cmd
In python 2 puoi farlo con: raw_input ()
>>print("Hello World!")
>>raw_input('Waiting a key...')
In python 3 puoi farlo con: input ()
>>print("Hello world!")
>>input('Waiting a key...')
Inoltre, puoi farlo con time.sleep (time)
>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
Usando atexit
, puoi mettere in pausa il programma proprio quando esce. Se un errore / eccezione è la ragione dell'uscita, si fermerà dopo aver stampato lo stacktrace.
import atexit
# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')
Nel mio programma ho inserito la chiamata atexit.register
nella except
clausola, in modo che si fermi solo se qualcosa è andato storto.
if __name__ == "__main__":
try:
something_that_may_fail()
except:
# Register the pause.
import atexit
atexit.register(input, 'Press Enter to continue...')
raise # Reraise the exception.
Ho avuto un problema simile. Con Notepad ++ usavo il comando: C:\Python27\python.exe "$(FULL_CURRENT_PATH)"
che chiudeva la finestra cmd immediatamente dopo la fine del codice.
Ora sto usando cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"
che mantiene aperta la finestra cmd.
Per mantenere la finestra aperta sono d'accordo con Anurag e questo è quello che ho fatto per tenere le finestre aperte per brevi programmi di tipo di calcolo.
Ciò mostrerebbe solo un cursore senza testo:
raw_input()
Il prossimo esempio ti darebbe un chiaro messaggio che il programma è stato fatto e non è in attesa di un altro prompt di input all'interno del programma:
print('You have reached the end and the "raw_input()" function is keeping the window open')
raw_input()
Nota!
(1) In python 3, non esiste raw_input () , ma solo input () .
(2) Usa virgolette singole per indicare una stringa; altrimenti se si digita raddoppia attorno a qualcosa, come "raw_input ()", si pensa che sia una funzione, una variabile, ecc. e non un testo.
In questo prossimo esempio, uso le virgolette doppie e non funzionerà perché pensa che ci sia un'interruzione tra virgolette tra "la" e "funzione" anche se quando la leggi, la tua mente può avere perfettamente senso di essa:
print("You have reached the end and the "input()" function is keeping the window open")
input()
Spero che questo aiuti gli altri che potrebbero iniziare e non hanno ancora capito come pensa il computer. Può volerci un po '. : O)
Se si desidera eseguire lo script da un collegamento sul desktop, fare clic con il pulsante destro del mouse sul file Python e selezionare Send to|Desktop (create shortcut)
. Quindi fare clic con il tasto destro del collegamento e selezionare Proprietà. Nella scheda Collegamento selezionare la casella di testo Target: e aggiungere cmd /k
davanti al percorso e fare clic su OK. Il collegamento dovrebbe ora eseguire lo script senza chiudersi e non è necessarioinput('Hit enter to close')
Nota, se hai più di una versione di Python sul tuo computer, aggiungi il nome dell'eseguibile python richiesto tra cmd / k e il percorso scipt in questo modo:
cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"
Oltre a input
e raw_input
, potresti anche usare un while
ciclo infinito , come questo:
while True: pass
(Python 2.5 + / 3) o while 1: pass
(tutte le versioni di Python 2/3). Questo potrebbe usare la potenza di calcolo, però.
È inoltre possibile eseguire il programma dalla riga di comando. Digita python
nella riga di comando (Terminale Mac OS X) e dovrebbe essere indicato Python 3.?.?
(versione Your Python) Non mostra la tua versione Python, o dice python: command not found
, cerca di modificare i valori PATH (valori ambientali, elencati sopra) / tipo C:\(Python folder\python.exe
. Se ciò ha esito positivo, digitare python
oe C:\(Python installation)\python.exe
la directory completa del programma.
Una risposta molto tardiva, ma ho creato un file batch di Windows chiamato pythonbat.bat
contenente quanto segue:
python.exe %1
@echo off
echo.
pause
e quindi specificato pythonbat.bat
come gestore predefinito per i .py
file.
Ora, quando faccio doppio clic su un .py
file in Esplora file, apre una nuova finestra della console, esegue lo script Python e quindi fa una pausa (rimane aperta), finché non premo un tasto qualsiasi ...
Non sono necessarie modifiche agli script Python.
Posso ancora aprire una finestra della console e specificare python myscript.py
se voglio ...
(Ho appena notato che @maurizio ha già pubblicato questa risposta esatta)
Ho trovato che la soluzione sul mio ambiente py3 su win10 è semplicemente eseguire cmd o powershell come amministratore, e l'output rimarrebbe nella stessa finestra della console, qualsiasi altro tipo di comando python eseguito dall'utente farebbe aprire a Python una nuova finestra della console.
Puoi solo scrivere
input()
alla fine del tuo codice
quindi quando esegui il tuo script ti aspetterà di inserire qualcosa
{ENTER for example}
È possibile aprire PowerShell e digitare "python". Dopo che Python è stato importato, puoi copiare il codice sorgente dal tuo editor di testo preferito per eseguire il codice.
La finestra non si chiuderà.
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
print "hello world"
python hello.py
Il modo più semplice:
import time
#Your code here
time.sleep(60)
#end of code (and console shut down)
questo lascerà il codice attivo per 1 minuto e poi lo chiuderà.
Su Windows 10 inserire a questo inizio:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Strano, ma funziona per me! (Insieme a input () alla fine, ovviamente)