通过不同的 python 脚本动态处理 getopt

handling getopt dynamically through different python script

我正在使用 getopt 来处理我所有脚本中的可选参数。我有很多脚本,我必须分别管理所有脚本中的 getopt,因为所有脚本都有不同的选项。

我的问题是,是否有任何动态方法可以通过单个 class 定义所有选项并仅通过对象更新这些选项来处理这些选项?

目前我是这样使用 getopt 的:

import getopt 
if __name__=="__main__":
     if len(sys.argv) < 2:
         usage()
     else:
         try:
             options, remainder = getopt.getopt(sys.argv[2:], 's:n:i:a:c:t:p:', ['s1=','n1=','iteration=','api_v=', 'c='.....,])

         except getopt.GetoptError:
             print "\nError: Provided options are not correct!\n"
             usage()

        for opt, arg in options:
            if opt in ('-s', '--s1'):
                s1 = arg
            if opt in ('-n', '--n1'):
                try:
                    n1= int(arg)
                except ValueError:
                    print("Error : n1 not an integer!")
                    exit()
            elif opt in ('-i', '--iteration'):
                try:
                     timeout = int(arg)
                except ValueError:
                    print("Error : iteration not an integer!")
                    exit()

            elif opt in ('-a', '--abc'):
                abc = arg
                .....
                ....
            #and list goes on.

我几乎所有的脚本都有不同的选项。有没有更干净的方法来实现同样的事情?

查看docopt模块。它允许您非常非常容易地为您的脚本定义选项,几乎不需要代码,只需描述它们的文档字符串:http://docopt.org/

您可能会发现 argparse 模块更易于使用和阅读。你可以在一个单独的模块中创建一个 ArgumentParser 工厂函数,然后从你的所有脚本中调用它到 return 一个具有正确选项的解析器