在Python中组合命令行和环境变量数据的方法

在Python中组合命令行和环境变量数据的方法,python,command-line,environment-variables,optparse,Python,Command Line,Environment Variables,Optparse,我正在编写一个公共函数来检查是否存在某些命令行选项,并返回一个包含这些选项的对象。到目前为止,使用optparse(我仅限于使用Python 2.6.2),我得到了: def getConfig( usage, needInputFile=False, needPhase=False ): parser = OptionParser( usage=usage ) if ( needInputFile ): parser.add_option("-f", "--fi

我正在编写一个公共函数来检查是否存在某些命令行选项,并返回一个包含这些选项的对象。到目前为止,使用
optparse
(我仅限于使用Python 2.6.2),我得到了:

def getConfig( usage, needInputFile=False, needPhase=False ):
    parser = OptionParser( usage=usage )
    if ( needInputFile ):
        parser.add_option("-f", "--file", dest = "filename",
                          help = "Read report from FILE", metavar="FILE")
    if ( needPhase ):
        parser.add_option("-p", "--phase", dest = "phase",
                          help = "Processing phase")

    ( options, args ) = parser.parse_args()

    if ( needInputFile and options.filename == None ):
        parser.error("Filename must be provided.")

    if ( needPhase and options.phase == None ):
        parser.error("Phase must be provided.")

    return options
这很好,但我现在想通过相同的机制提供程序名和某些环境变量,以便它可用于将使用它的几个不同脚本

我的直觉是将optpass选项复制到字典中,并添加程序名和额外的env。返回之前,将var信息输入字典


我很想知道人们对这种方法的看法。有更好的/更被接受的方法吗?

仅供参考,对于像
None
这样的单身人士,你应该使用
Is
而不是
=
,或者更好的方法是,使用
not
,因为
None
False
。示例:
if needPhase and not options.phase:
(忘记那些括号吧。那不是很像pythonic(除非你对布尔求值进行排序)。谢谢。我很想学习这类东西,尽管去掉括号对我来说很棘手,因为它们会给我一个(非理性的)错误)舒适感和安全感!请放下盘子。结肠可以提供足够的能量。