我有一个可以通过CGI脚本(从表单传递信息)或从命令行调用的Python模块(从命令行传递选项和参数)。 有没有办法确定是从CGI脚本还是从命令行调用模块?
答案 0 :(得分: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.
答案 1 :(得分:6)
这是一个非常糟糕的设计理念。您的脚本应该设计为独立于其调用方式工作。呼叫程序应提供统一的环境。
如果您将脚本设计为以一致的方式工作,那么您将会感到最开心。建立这样的东西。
myscript.py - “实际工作” - 在函数和类中定义。
myscript_cgi.py - 一个导入myscript并使用类和函数的CGI接口。
myscript_cli.py - 解析命令行选项,导入myscript并使用类和函数的命令行界面。
执行所有三项操作(实际工作,cgi接口,cli接口)的单个脚本通常是错误的。