我有一个 Python 模块,可以通过 CGI 脚本(从表单向其传递信息)或从命令行(从命令行向其传递选项和参数)调用。有没有办法确定模块是从 CGI 脚本还是从命令行调用的?

有帮助吗?

解决方案

这样做:

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.

其他提示

这是一个非常糟糕的设计理念。您的脚本应该设计为独立于其调用方式而工作。调用程序应该提供一个统一的环境。

如果您设计的脚本以完全一致的方式工作,您将会感到最高兴。构建这样的东西。

  • myscript.py - “真正的工作” - 在函数和类中定义。

  • myscript_cgi.py - 一个导入 myscript 并使用类和函数的 CGI 接口。

  • myscript_cli.py - 命令行界面,用于解析命令行选项、导入 myscript 并使用类和函数。

一个脚本完成所有三件事(实际工作、cgi 接口、cli 接口)通常是一个错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top