2009-05-04 2 views
3

Ich habe ein Python-Modul, das von einem CGI-Skript (Übergabe von Informationen aus einem Formular) oder von der Befehlszeile (Übergabe von Optionen und Argumenten über die Befehlszeile) aufgerufen werden kann. Gibt es eine Möglichkeit festzustellen, ob das Modul aus dem CGI-Skript oder von der Befehlszeile aufgerufen wurde?Python, der mein Python-Modul aufruft

Antwort

9

es Dies tun:

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. 
+0

Vielen Dank für Ihre Antwort !!! Ich habe es gerade ausprobiert und es funktioniert ... – wheisenberg

6

Dies ist eine wirklich schlechte Design-Idee. Ihr Skript sollte so konzipiert sein, dass es unabhängig davon funktioniert, wie es heißt. Die aufrufenden Programme sollten eine einheitliche Umgebung bereitstellen.

Sie werden am glücklichsten sein, wenn Sie Ihre Skripts so gestalten, dass sie auf genau eine konsistente Weise funktionieren. Baue solche Dinge.

  • myscript.py - die "echte Arbeit" - definiert in Funktionen und Klassen.

  • myscript_cgi.py - eine CGI-Schnittstelle, die myscript importiert und die Klassen und Funktionen verwendet.

  • myscript_cli.py - die Befehlszeilenschnittstelle, die die Befehlszeilenoptionen analysiert, myscript importiert und die Klassen und Funktionen verwendet.

  • Ein einzelnes Skript, das alle drei Dinge (echte Arbeit, CGI-Schnittstelle, CLI-Schnittstelle) tut, ist normalerweise ein Fehler.

    +0

    Hallo, danke für den Hinweis! Ich werde tun, wie Sie vorgeschlagen haben ... P.S. Ich habe angefangen, dein Buch zu lesen, ich sehe es wirklich !!! Tschüss – wheisenberg