Passing arguments to a python program from the command line, anything better than sys.argv?
本问题已经有最佳答案,请猛点这里访问。
我有一个要从终端运行的python脚本,它需要10个数字参数。到目前为止,我能想到的将参数传递给程序的唯一方法是:
1 | python myscript.py 10,20,30,,40 |
然后使用sys.argv来分离参数,处理它们并使用它们。问题是,有时候中间的一些参数需要为空,这样程序就可以使用它的"默认值"。这意味着现在我需要在参数中使用逗号来指定一个值为空,这与我在其他程序中看到的标准相反,这很烦人。
有更好的方法吗?
干杯,
弥敦
操作系统:Ubuntu
python版本:2.7
所有的第一,如果你有一些参数,这些参数可以omitted,应该是选项和不真实的说法。
Python提供了比单参数分析。最好的选择是
使用一个简单的例子可能是:
1 2 3 4 5 6 7 8 9 | import argparse parser = argparse.ArgumentParser() parser.add_argument('--option-name', action='store', dest='option_name_var') parser.add_argument('numbers', type=int, nargs='*') parsed = parser.parse_args() #parses sys.argv by default print(parsed.numbers) print(parsed.option_name_var) |
可以被用来作为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $python example.py 1 2 3 [1, 2, 3] None $python example.py 1 2 3 --option-name"value" [1, 2, 3] value $python example.py 1 2 3 --option-name usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]] example.py: error: argument --option-name: expected one argument $python example.py --option-name usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]] example.py: error: argument --option-name: expected one argument $python example.py --option-name 5 [] 5 $python example.py 1 2"string" usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]] example.py: error: argument numbers: invalid int value: 'string' |
说明如何分配是自动转换到整数列表,如果错误是在发出的价值是一个整数或有缺失的参数等。
你有一个默认的帮助文件:
1 2 3 4 5 6 7 8 9 | $python example.py -h usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]] positional arguments: numbers optional arguments: -h, --help show this help message and exit --option-name OPTION_NAME_VAR |
docs.python.org http:/ / / 2 /图书馆/ argparse.html