2014-09-25 14 views
8

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?

+0

stampa su stdout su python 3.4 –

+2

suo stderr in 3.2.3 ... stiamo restringendolo! – tdelaney

+3

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) –

risposta

10

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!

1

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?

+2

Direi che nel caso di 'python --version' la stringa di versione è" il prodotto dell'esecuzione corretta del programma ". – aaaarrgh

Problemi correlati