2010-11-24 41 views
9

J'ai un petit utilitaire Python qui doit être exécuté uniquement en tant que canal. Je veux qu'il imprime le message d'aide quand il fonctionne seul. Comment un processus peut-il savoir s'il est utilisé comme un tuyau? La comparaison de sys.stdin et sys.__stdin__ ne fonctionne pas.Vérification de l'exécution du processus en tant que canal

Répondre

13

Vous pouvez utiliser isatty:

if sys.stdin.isatty(): 

Il sera True si l'entrée standard est un tty, ce qui signifie à peu près il est utilisé directement, à l'extérieur d'un tuyau.

+2

Aussi 'if sys.stdout.isatty()' pour l'opposé. – isaaclw

+0

Juste un indice: si vous démarrez python dans un environnement CI ala travis, jenkins ou gitlab-ci, il se peut que 'sys.stdin.isatty()' soit toujours 'False'. –