首先,如果你有一些参数可以被省略,这些参数应该是选项,而不是真正的论据。
Python提供了多种解析参数的方法。最好的选择是argparse
,它具有大量的功能和其开发继续的模块。如果你必须支持python的“旧”版本,那么你可能会对optparse
感兴趣,尽管它已经在python3.2中被弃用了。存在也是一个getopt
模块,它模仿C'S getopt的(!做不使用这种它的存在,更由于历史的原因,并帮助这些老样式解析的使用人)
使用一个简单的例子可能是:
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)
哪些可以作为:
$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'
注意如何号码会自动转换为整数的列表,并发出一个错误,如果该值不是N个整或有遗漏的参数等
你也有一个默认的说明文字:
$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
http://docs.python.org/2/library/argparse.html – jamylak 2013-04-06 10:41:51
考虑看看那个现在,欢呼声 – 2013-04-06 10:46:34
也许将您的参数存储在一个文件中,然后从您的程序中读取它是一个解决方案。 – zhangyangyu 2013-04-06 10:47:39