2024-04-25 22:42:52 发布
网友
我可以使用argparse来读取不需要按特定顺序排列的命名命令行参数吗?我浏览了documentation,但大部分都集中在根据提供的参数显示内容(例如--h)。
argparse
--h
现在,我的脚本读取有序的、未命名的参数:
myscript.py foo-val bar-val
使用sys.argv:
sys.argv
foo = sys.argv[1] bar = sys.argv[2]
但我想更改输入,以便通过命名参数不区分顺序:
myscript.py --bar=bar-val --foo=foo-val
您可以像这样使用Optional Arguments:
import argparse, sys parser=argparse.ArgumentParser() parser.add_argument('--bar', help='Do the bar option') parser.add_argument('--foo', help='Foo the program') args=parser.parse_args() print args print sys
如果用./prog --bar=bar-val --foo foo-val调用它,它将打印:
./prog --bar=bar-val --foo foo-val
Namespace(bar='bar-val', foo='foo-val') ['Untitled 14.py', '--bar=bar-val', '--foo', 'foo-val']
或者,如果用户也需要帮助argparse构建:
$ ./prog -h usage: Untitled 14.py [-h] [--bar BAR] [--foo FOO] optional arguments: -h, --help show this help message and exit --bar BAR Do the bar option --foo FOO Foo the program
答案是肯定的。快速看一下the argparse documentation也会有答案。
这里有一个非常简单的例子,argparse能够处理更具体的需求。
import argparse parser = argparse.ArgumentParser() parser.add_argument('--foo', '-f', help="a random options", type= str) parser.add_argument('--bar', '-b', help="a more random option", type= int, default= 0) print(parser.format_help()) # usage: test_args_4.py [-h] [--foo FOO] [--bar BAR] # # optional arguments: # -h, --help show this help message and exit # --foo FOO, -f FOO a random options # --bar BAR, -b BAR a more random option args = parser.parse_args("--foo pouet".split()) print(args) # Namespace(bar=0, foo='pouet') print(args.foo) # pouet print(args.bar) # 0
当然,在真正的脚本中,您不会硬编码命令行选项,而是调用parser.parse_args()(不带参数)。它将使argparse接受sys.args列表作为命令行参数。
parser.parse_args()
sys.args
您可以这样调用此脚本:
test_args_4.py -h # prints the help message test_args_4.py -f pouet # foo="pouet", bar=0 (default value) test_args_4.py -b 42 # foo=None, bar=42 test_args_4.py -b 77 -f knock # foo="knock", bar=77
通过阅读文档,您将发现许多其他功能;)
您可以像这样使用Optional Arguments:
如果用
./prog --bar=bar-val --foo foo-val
调用它,它将打印:或者,如果用户也需要帮助argparse构建:
答案是肯定的。快速看一下the argparse documentation也会有答案。
这里有一个非常简单的例子,argparse能够处理更具体的需求。
当然,在真正的脚本中,您不会硬编码命令行选项,而是调用
parser.parse_args()
(不带参数)。它将使argparse接受sys.args
列表作为命令行参数。您可以这样调用此脚本:
通过阅读文档,您将发现许多其他功能;)
相关问题 更多 >
编程相关推荐