amp*_*ent 39 python arguments python-3.x
我可以argparse用来读取不需要按特定顺序排列的命名命令行参数吗?我浏览了文档但其中大部分内容都集中在根据提供的参数显示内容(例如--h).
现在,我的脚本读取有序的,未命名的参数:
myscript.py foo-val bar-val
使用sys.argv:
foo = sys.argv[1]
bar = sys.argv[2]
Run Code Online (Sandbox Code Playgroud)
但我想更改输入,以便通过命名参数与命令无关:
myscript.py --bar = bar-val --foo = foo-val
daw*_*awg 53
您可以像这样使用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
Run Code Online (Sandbox Code Playgroud)
然后,如果你打电话给./prog --bar=bar-val --foo foo-val它打印:
Namespace(bar='bar-val', foo='foo-val')
['Untitled 14.py', '--bar=bar-val', '--foo', 'foo-val']
Run Code Online (Sandbox Code Playgroud)
或者,如果用户想要帮助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
Run Code Online (Sandbox Code Playgroud)
Try*_*yph 17
答案是肯定的.快速浏览一下argparse文档也会得到解答.
这是一个非常简单的例子,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
Run Code Online (Sandbox Code Playgroud)
当然,在一个真实的脚本中,你不会硬编码命令行选项,parser.parse_args()而是会调用(不带参数).它将使argparse将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
Run Code Online (Sandbox Code Playgroud)
您将通过阅读文档发现许多其他功能;)
| 归档时间: |
|
| 查看次数: |
19396 次 |
| 最近记录: |