这不是关于如何使用argparse
,而是关于如何在程序中使用已解析的选项。
在功能选项中检查选项/使用值的好方法是什么?
一些想法:
if
- 子句。我必须采用一些技术,这对于有很多选项的大型程序来说似乎不可行,特别是当程序的不同部分有多个文件时。
答案 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项目中的任何应用程序都可以导入和查询设置。