正如其他人回答的那样, optparse 是最好的选择,但如果您只想快速编写代码,请尝试以下操作:
import sys, re
first_re = re.compile(r'^\d{3}$')
if len(sys.argv) > 1:
if first_re.match(sys.argv[1]):
print "Primary argument is : ", sys.argv[1]
else:
raise ValueError("First argument should be ...")
args = sys.argv[2:]
else:
args = ()
# ... anywhere in code ...
if 'debug' in args:
print 'debug flag'
if 'xls' in args:
print 'xls flag'
编辑:这是一个 optparse 示例,因为很多人在回答 optparse 时没有真正解释原因,或者解释您必须更改哪些内容才能使其正常工作。
使用 optparse 的主要原因是它为您以后的扩展提供了更大的灵活性,并在命令行上为您提供了更多的灵活性。换句话说,您的选项可以按任何顺序出现,并且使用消息会自动生成。但是,要使其与 optparse 一起使用,您需要更改规范以将“-”或“--”放在可选参数的前面,并且您需要允许所有参数按任意顺序排列。
所以这里有一个使用 optparse 的例子:
import sys, re, optparse
first_re = re.compile(r'^\d{3}$')
parser = optparse.OptionParser()
parser.set_defaults(debug=False,xls=False)
parser.add_option('--debug', action='store_true', dest='debug')
parser.add_option('--xls', action='store_true', dest='xls')
(options, args) = parser.parse_args()
if len(args) == 1:
if first_re.match(args[0]):
print "Primary argument is : ", args[0]
else:
raise ValueError("First argument should be ...")
elif len(args) > 1:
raise ValueError("Too many command line arguments")
if options.debug:
print 'debug flag'
if options.xls:
print 'xls flag'
optparse 和您的规范的区别在于,现在您可以使用如下命令行:
python script.py --debug --xls 001
您可以通过调用 parser.add_option() 轻松添加新选项