Perché Guido (o chiunque altro) ha deciso di effettuare la stampa python --version
su stderr anziché su stdout? È solo curioso di sapere quale sia il caso d'uso che rende l'errore standard più appropriato rispetto allo standard.Perché Python stampa informazioni sulla versione su stderr?
risposta
Python 3.4 è stato modificato per l'output stdout
, che è il comportamento previsto. Questo è elencato come un bug con Python qui: http://bugs.python.org/issue18338. I commenti sul bug report indicano che mentre stdout
è la scelta ragionevole, romperebbe la compatibilità con le versioni precedenti. Python 2.7.9 è in gran parte invariato, perché così tanto si basa su di esso.
Spero che questo aiuti!
Molti programmi utilizzano solo stdout
e non mi interessa, ma preferisco lo standard stderr
. In breve, credo che stdout
sia per il prodotto di successo dell'esecuzione di un programma mentre stderr
è per tutti i messaggi destinati all'utente. I valori calcolati vanno a stdout
mentre errori, stack trace, help, versione e i messaggi di utilizzo sono pensati per l'utente e dovrebbero andare a stderr
.
Io uso questa domanda per decidere quale uscita del flusso è appropriata: questo messaggio è pensato per il consumatore del prodotto principale di questo programma (che sia l'utente umano o un altro programma o qualsiasi altra cosa) o è strettamente per l'umano utente di questo programma?
Inoltre, sembra che Java utilizza stderr per i messaggi di versione così a proposito: Why does 'java -version' go to stderr?
Direi che nel caso di 'python --version' la stringa di versione è" il prodotto dell'esecuzione corretta del programma ". – aaaarrgh
- 1. Perché java.util.logging.Logger stampa su stderr?
- 2. disponibili informazioni sulla versione
- 3. AssemblyInfo informazioni sulla versione asterischi
- 4. Elimina stampa stdout/stderr dalle funzioni Python
- 5. Come si stampa su stderr in R?
- 6. Compilazione della DLL con informazioni sulla versione
- 7. Autotools GNU: ricostruzione senza informazioni sulla versione
- 8. Come ordinare le informazioni sulla versione
- 9. Perché il reindirizzamento di stderr/stderr su Android non funziona?
- 10. Informazioni sulla variabile globale in Python
- 11. Python 2.7: Stampa su file
- 12. hanno bisogno di informazioni sulla stampa [data NSDate]
- 13. Python: Perché `sys.exit (msg)` chiamato da un thread non stampa `msg` in stderr?
- 14. Stampa di versione Python in uscita
- 15. SchemaSpyGUI: Impossibile interrogare le informazioni sulla versione di Graphviz
- 16. Informazioni sulla risoluzione dell'iPhone
- 17. Ottieni le informazioni sulla versione di un servizio installato?
- 18. Generazione delle informazioni sulla versione in Matlab (Compilatore Matlab)
- 19. scrivi git commit informazioni sulla versione nel footer dell'app
- 20. Utilizzando XmlUpdate per impostare informazioni sulla versione da un'Assemblea
- 21. Informazioni sulla ricerca elastica
- 22. Informazioni sulla callback app.listen()
- 23. Informazioni su Python Pickle Insecurity
- 24. Informazioni su Python Terminale Unicode e Linux
- 25. Come reindirizzare lo stderr in Python?
- 26. puts non stampa roba sulla console
- 27. Tentativo di visualizzare le informazioni sulla versione del pacchetto in un messaggio "Informazioni"
- 28. Perché "subprocess.check_call (..., stderr = sys.stdout)" non funziona in Python 2.6?
- 29. Informazioni sulla virtualizzazione
- 30. Informazioni sulla filettatura
stampa su stdout su python 3.4 –
suo stderr in 3.2.3 ... stiamo restringendolo! – tdelaney
il comportamento è stato modificato da [questa patch] (https://hg.python.org/cpython/rev/e6384b8b2325) ed è stato quindi aggiunto a 3.4 [note di rilascio] (https://hg.python.org/cpython/ giri/fc089cf0cf32). originale [bug report] (http://bugs.python.org/issue18338) –