python argparse - 在没有命令行的情况下将列表传递给 argparse
python argparse - passing list to argparse without command line
我正在尝试使用我在另一个 python 脚本中使用 argparse 编写的参数处理程序。我想通过将参数列表传递给它来调用它。这是一个简单的例子:
def argHandler(argv):
import argparse
parser = argparse.ArgumentParser(description='Test argument parser')
parser.add_argument('foo', action='store',type=str)
parser.add_argument('bar', action='store',type=str)
parser.add_argument('-nee','--knightssaynee',action='store',type=str)
args = parser.parse_args()
return args.foo, args.bar, args.nee
if __name__=='__main__':
argList = ['arg1','arg2','-nee','arg3']
print argHandler(argList)
这个return是一个:
usage: scratch.py [-h] [-nee KNIGHTSSAYNEE] foo bar
scratch.py: error: too few arguments
在我看来,我定义的函数应该采用参数和标志列表,以及 return 命名空间。我错了吗?
您需要将这些参数传递给 parser.parse_args()
方法:
args = parser.parse_args(argv)
来自ArgumentParser.parse_args()
documentation:
ArgumentParser.parse_args(args=None, namespace=None)
[...]
By default, the argument strings are taken from sys.argv
[...]
注意那里的 args
论点。您可能希望将 argHandler()
函数的 argv
参数也默认设置为 None
;这样你就不会 有 传递参数并最终得到相同的默认 None
值:
def argHandler(argv=None):
我获取程序输入的另一种方法是从具有键值对的 json 文件并使用 json 加载库将文件内容加载为 json 对象。
我正在尝试使用我在另一个 python 脚本中使用 argparse 编写的参数处理程序。我想通过将参数列表传递给它来调用它。这是一个简单的例子:
def argHandler(argv):
import argparse
parser = argparse.ArgumentParser(description='Test argument parser')
parser.add_argument('foo', action='store',type=str)
parser.add_argument('bar', action='store',type=str)
parser.add_argument('-nee','--knightssaynee',action='store',type=str)
args = parser.parse_args()
return args.foo, args.bar, args.nee
if __name__=='__main__':
argList = ['arg1','arg2','-nee','arg3']
print argHandler(argList)
这个return是一个:
usage: scratch.py [-h] [-nee KNIGHTSSAYNEE] foo bar
scratch.py: error: too few arguments
在我看来,我定义的函数应该采用参数和标志列表,以及 return 命名空间。我错了吗?
您需要将这些参数传递给 parser.parse_args()
方法:
args = parser.parse_args(argv)
来自ArgumentParser.parse_args()
documentation:
ArgumentParser.parse_args(args=None, namespace=None)
[...]
By default, the argument strings are taken from
sys.argv
[...]
注意那里的 args
论点。您可能希望将 argHandler()
函数的 argv
参数也默认设置为 None
;这样你就不会 有 传递参数并最终得到相同的默认 None
值:
def argHandler(argv=None):
我获取程序输入的另一种方法是从具有键值对的 json 文件并使用 json 加载库将文件内容加载为 json 对象。