命令行python脚本传入参数

方式一:

调用脚本的时候直接传入参数,使用sys.argv接收参数,如果不需要打印脚本名称,sys.argv改为sys.argv[1:]即可,默认sys.argv[0]为脚本名称

for item in sys.argv:
                print i
1.1

方式二:

使用argparse,可以限定接收的参数类型,例如只需要传入一个int型的build_id,那么只用:

  1. 指定其名称为"build_id"方便调用
  2. 限定其类型为int避免传入其他格式的数据,否则展示2.2所示提示
  3. 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
2.1

2.2

方式三:

使用getopt,命令行选项使得程序的参数更加灵活。支持短选项模式 - 和长选项模式 --

  1. 指定短选项时,必须跟参数的选项需要在后面加上: ,比如下面的例子中,f和t都需要传入参数所以都加了: , n不需要就不用加
  2. 指定长选项时,将可能的选项加入一个数组,需要跟参数的同上要加=
  3. try except这样的固定格式方便在不知道如果使用时如图3.2获得指定提示
  4. 该方式比较适合编写多种动作的脚本,逻辑较为清晰。
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()
3.1

3.2
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容