方式一:
调用脚本的时候直接传入参数,使用sys.argv接收参数,如果不需要打印脚本名称,sys.argv改为sys.argv[1:]即可,默认sys.argv[0]为脚本名称
for item in sys.argv:
print i
方式二:
使用argparse,可以限定接收的参数类型,例如只需要传入一个int型的build_id,那么只用:
- 指定其名称为"build_id"方便调用
- 限定其类型为int避免传入其他格式的数据,否则展示2.2所示提示
- help中的内容填入后 调用-h 就可以看到对字段的描述
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('build_id', type=int, help='type the build_id of target_files')
args = parser.parse_args()
print args.build_id
方式三:
使用getopt,命令行选项使得程序的参数更加灵活。支持短选项模式 - 和长选项模式 --
- 指定短选项时,必须跟参数的选项需要在后面加上: ,比如下面的例子中,f和t都需要传入参数所以都加了: , n不需要就不用加
- 指定长选项时,将可能的选项加入一个数组,需要跟参数的同上要加=
- try except这样的固定格式方便在不知道如果使用时如图3.2获得指定提示
- 该方式比较适合编写多种动作的脚本,逻辑较为清晰。
import getopt
def test_getopt():
shortargs = "f:t:n"
longargs = ["ip=", "format", "what="]
try:
opts, args = getopt.getopt(sys.argv[1:], shortargs, longargs)
for opt, val in opts:
if opt in ('-f', '-t'):
print "say:" + val
elif opt in '-n':
print "silent man"
elif opt in ("--ip", "--what"):
print "keep saying:" + val
elif opt in '--format':
print "format nothing"
except getopt.GetoptError:
print 'main.py -f <> ........'
if __name__ == '__main__':
test_getopt()