zoukankan      html  css  js  c++  java
  • python编写工具之基础——处理命令行参数

    1.分类


    1.命令行的参数的位置是固定的。比如ip是第一个参数,端口是第二个,而不能反过来
    2.位置不固定。用一横杠加个字母什么的,表示他后面跟的是什么参数(如 -p 8888 :代表端口是8888)

    2.如何获得命令行参数

    必须导入sys模块~
    import sys
    print sys.argv

    可以看到 sys.argv是一个列表,获得的参数中,第一个文件名,后面才是我们输入的各种参数

    3.参数的位置是固定的

    # encoding: utf-8
    
    """
    @version: 
    @author: giantbranch
    @file: fix_position.py
    @time: 2016/3/18 21:58
    """
    
    import sys
    # print sys.argv
    
    def test1():
        print "你调用了test1"
    
    def getYourWord(word):
        print "你输入了" + word
    
    def main():
        try:
            # 获取第二个命令行参数,因为第一个为文件名
            func = sys.argv[1]
            # 通过判断调用相应功能
            if(func == "test1"):
                test1()
            elif(func == "say"):
                try:
                    getYourWord(sys.argv[2])
                except:
                    print "请输入你想say什么"
            else:
                print "输入参数只能使test1或say"
        except:
            print "请输入一个参数,只能使test1或say"
    
    main()
    
    


    3.参数的位置是不固定的

    #-*- coding:utf8 -*-  
    
    """
    @version: 
    @author: giantbranch
    @file: unfix_position.py
    @time: 2016/3/18 22:57
    """
    
    import sys
    import getopt
    
    def test1():
        print "你调用了test1"
    
    def getYourWord(word):
        print "你输入了" + word
    
    def usage():
        print "用法举例:"
        print "python unfix_position.py -h"
        print "python unfix_position.py --help"
        print "python unfix_position.py -t"
        print "python unfix_position.py --test1"
        print "python unfix_position.py -s hello"
        # 这个不行
        print "python unfix_position.py --say hello"
    
    def main():
    
        # 读取命令行选项,若没有该选项则显示用法
        try:
            # opts:一个列表,列表的每个元素为键值对
            # args:其实就是sys.argv[1:]
            # sys.argv[1:]:只处理第二个及以后的参数
            # "ts:h":选项的简写,有冒号的表示后面必须接这个选项的值(如 -s hello)
            # ["help", "test1", "say"] :当然也可以详细地写出来,不过要两条横杠(--)
            opts, args = getopt.getopt(sys.argv[1:], "ts:h",["help", "test1", "say"])
            # print opts
    
            # 具体处理命令行参数
            for o,v in opts:
                if o in ("-h","--help"):
                    usage()
                elif o in ("-t", "--test1"):
                    test1()
                # 经测试--是不能带后继值的
                elif o in ("-s", "--say"):
                     getYourWord(v)
        except getopt.GetoptError as err:
            # print str(err)
            usage()
    
    main()



    好了,就到这,具体写工具就自我发挥咯

  • 相关阅读:
    activemq 高可用集群部署
    rabbitmq单机部署、集群部署、haproxy+keepalived 的高可用负载均衡环境搭建
    redis 单机部署、集群部署(主从同步+哨兵)
    zookeeper 单机部署、伪集群部署、集群部署
    IDEA 中调试 dubbo 出现 <dubbo:reference interface="" /> interface not allow null! 异常
    centos 安装 subversion1.8及更高版本
    mysql 两主一从环境搭建
    mysql 一主多从环境搭建
    springboot + post 中文乱码
    android:inputType参数类型说明
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286562.html
Copyright © 2011-2022 走看看