如何检查python程序中的选项?

时间:2012-12-10 21:07:37

标签: python global-variables options argparse

这不是关于如何使用argparse,而是关于如何在程序中使用已解析的选项。

在功能选项中检查选项/使用值的好方法是什么?

一些想法:

  • 使用全局变量(模块变量)
  • 为要使用值的函数添加参数并将其传递(可能多个函数级别)
  • 每次有什么东西取决于一个选项(带有全局变量?)时,
  • 检查if - 子句。
  • define a special function for some checks

我必须采用一些技术,这对于有很多选项的大型程序来说似乎不可行,特别是当程序的不同部分有多个文件时。

1 个答案:

答案 0 :(得分:3)

在我看来,参数解析应该是在应用程序的入口点执行的。库/模块逻辑应保持不可知,并使用参数进行初始化。

也就是说,如果您的可运行应用程序需要输入文件的路径,那么您的main()入口点可能会使用argparse来接受--infile。但是库函数readfile应该不了解argparse,并且要么是接收infile作为成员属性的类的一部分,要么它应该直接作为参数接收它。

class Reader(object):
    def __init__(self, infile):
        self.infile = infile

    def readfile(self):
        # read(self.infile)

或者...

def readfile(infile):
    # read(infile)

另一种方法是使用配置文件,并具有配置解析器模块。这可以读入并解析,然后仍然可用于需要全局应用程序配置选项的任何模块。这种方法的一个例子是django has its settings module。 django项目中的任何应用程序都可以导入和查询设置。