J'écris un script pour inspecter la version de Python sur mon système et j'ai remarqué que python -v code> écrit sur le flux d'erreur, tandis que python -h code> pour L'instance utilise la sortie standard. Y a-t-il une bonne raison pour ce comportement? P>
4 Réponses :
-h utilisé pour imprimer à stardr comme vous voyez ici à partir de MAIN.C
usage(int exitcode, char* program)
{
FILE *f = exitcode ? stderr : stdout;
fprintf(f, usage_line, program);
if (exitcode)
fprintf(f, "Try `python -h' for more information.\n");
else {
fputs(usage_1, f);
fputs(usage_2, f);
fputs(usage_3, f);
fprintf(f, usage_4, DELIM);
fprintf(f, usage_5, DELIM, PYTHONHOMEHELP);
}
Probablement sans bonne raison, certains creusés ont révélé le Le correctif Ajout des options, mais je peux trouver des références à la raison pour laquelle les différents flux sont utilisés dans la discussion sur le patch. P>
Pourquoi? P>
Parce que ce n'est pas la sortie réelle de votre script actuel. p>
C'est l'utilisation ordinaire de longue date, standard, courante, typique et ordinaire pour l'erreur standard: tout ne génère pas de votre script. P>
L'option -h également utilisée pour imprimer à starr car elle ne fait pas partie de la sortie de votre programme, c'est-à-dire que la sortie n'est pas produite par votre script Python, mais par l'interprète Python lui-même. p>
Quant pourquoi ils ont changé le -h pour utiliser stdout? Essayez de taper Maintenant, la plupart des gens réagiraient en essayant python -h code> avec la fenêtre de votre borne définie sur les 24 lignes standard. Il fait défiler l'écran. P>
python -h | moins code> mais qui ne fonctionne que si vous envoyez la sortie de -h au stdout au lieu de STDOUT. Donc, il y avait une bonne raison de la fabrication -h aller to stdout, mais pas de bonne raison de changer -v. P>