2009-05-04 5 views
3

У меня есть один модуль Python, который может быть вызван скриптом CGI (передача его из формы) или из командной строки (передача его параметров и аргументов из командной строки). Есть ли способ установить, был ли модуль вызван из CGI-скрипта или из командной строки?Python, который вызывает мой модуль python

ответ

9

Это будет делать это:

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

Большое спасибо за ваш ответ !!! Я только что попробовал, и это работает ... – wheisenberg

6

Это действительно плохая идея дизайна. Ваш сценарий должен быть разработан независимо от того, как он называется. Вызывающие программы должны обеспечивать единую среду.

Вы будете счастливы, если будете проектировать свои сценарии для работы ровно одним последовательным способом. Постройте такие вещи.

  • myscript.py - «настоящая работа» - определяется функциями и классами.

  • myscript_cgi.py - интерфейс CGI, который импортирует myscript и использует классы и функции.

  • myscript_cli.py - интерфейс командной строки, который анализирует параметры командной строки, импортирует myscript и использует классы и функции.

Один скрипт, который выполняет все три функции (реальная работа, интерфейс cgi, интерфейс cli), обычно является ошибкой.

+0

Привет, спасибо за совет! Я сделаю так, как предложил ... P.S. Я начал читать твою книгу, я ее ослеплю! пока – wheisenberg