通过不同的 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 一个具有正确选项的解析器
我正在使用 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 一个具有正确选项的解析器