Question

J'ai un module Python qui peut être appelé par un script CGI (en lui transmettant les informations d'un formulaire) ou à partir de la ligne de commande (en lui transmettant des options et des arguments à partir de la ligne de commande). Existe-t-il un moyen de déterminer si le module a été appelé à partir du script CGI ou de la ligne de commande?

Était-ce utile?

La solution

Cela le fera:

import os
if os.environ.has_key('REQUEST_METHOD'):
    # You're being run as a CGI script.
else:
    # You're being run from the command line.

Autres conseils

C’est une très mauvaise idée de design. Votre script doit être conçu pour fonctionner indépendamment de la manière dont il est appelé. Les programmes appelants doivent fournir un environnement uniforme.

Vous serez plus heureux si vous concevez vos scripts de manière à ce qu'ils fonctionnent exactement de la même manière. Construisez des choses comme ça.

  • myscript.py - le "travail réel" - défini dans les fonctions et les classes.

  • myscript_cgi.py - une interface CGI qui importe myscript et utilise les classes et les fonctions.

  • myscript_cli.py - l'interface de ligne de commande qui analyse les options de ligne de commande, importe myscript et utilise les classes et les fonctions.

Un seul script qui fait les trois choses (travail réel, interface cgi, interface cli) est généralement une erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top