【问题标题】:How to check for options in python programs?如何检查python程序中的选项?
【发布时间】:2012-11-28 08:34:35
【问题描述】:

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

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

一些想法:

  • 使用全局变量(模块变量)
  • 向要在其中使用值的函数添加参数并将其传递(可能不止一个函数级别)
  • 每当某事依赖于某个选项(使用全局变量?)时,请使用 if-clause 检查。
  • define a special function for some checks

我必须监督一些技术,这对于具有大量选项的大型程序来说似乎不可行,尤其是当程序的不同部分有多个文件时。

【问题讨论】:

    标签: python global-variables options argparse


    【解决方案1】:

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

    也就是说,如果您的可运行应用程序需要输入文件的路径,您的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 项目中的任何应用程序都可以导入和查询设置。

    【讨论】:

    • 那么在这种情况下模块变量肯定是要走的路吗?是的,那个 django 链接清除了很多东西。为此+1,硬链接是首先找到这些东西。我希望这个问题对其他人也有帮助。
    • 可能真的是模块“数据结构”。就像在一个非常基本的级别上一样,存储在 conf.py 中的字典在 init 上填充,并且可以被其他模块导入和读取。
    猜你喜欢
    • 2011-04-14
    • 2021-03-22
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多