【发布时间】:2016-02-28 19:35:35
【问题描述】:
我正在尝试设置一个代码,该代码可以通过带有命令行参数的命令行运行,或者可以从 python 脚本或交互式会话中调用——带有传递的参数。有什么好的模式/方法可以做到这一点?
我现在使用的基本思路是:
from argparse import ArgumentParser
class Sets:
def __init__(self):
self.verbose = False
self.par = 1
self.args = ['run', 'test']
def _update(self, parsed):
for key in vars(parsed).keys():
setattr(self, key, getattr(parsed, key))
print("\t", getattr(self, key))
def main(**kwargs):
sets = _parseArgs()
for key in kwargs.keys():
setattr(sets, key, kwargs[key])
print("verbose = ", sets.verbose)
print("par = ", sets.par)
print("args = ", sets.args)
return
def _parseArgs():
sets = Sets()
pars = ArgumentParser()
pars.add_argument('--verbose', action='store_true', default=sets.verbose)
pars.add_argument('--par', nargs=1, type=int, default=sets.par)
pars.add_argument('--args', nargs='+', type=str, default=sets.args)
sets._update(pars.parse_args())
return sets
if __name__ == "__main__":
main()
不过好像有点绕……
【问题讨论】:
-
您打算如何在会话或脚本中使用它?
-
@hpaulj 如果我正确理解了术语:两者都 --- 交互式/作为导入函数和可执行脚本。
标签: python api command-line-arguments argparse