zoukankan      html  css  js  c++  java
  • python处理命令行参数

    直接从命令行执行py文件的时候如果带有参数,如何获取这些参数,如何解析?

    http://blog.chinaunix.net/uid-20786165-id-3182268.html

    sys.argv

    sys.argv会接受所有的命令行输入, 第一个参数是文件名

    import sys
    import getopt
    
    # run this file
    if __name__ =='__main__':
    	print(sys.argv)
    
    $ python 1206.py xxx
    ['1206.py', 'xxx']
    

    getopt

    getopt模块就是用来解析sys.argv的,但是他有自己的格式要求,这个是广泛使用的
    http://blog.csdn.net/intel80586/article/details/8545572

    实例加强

    http://www.tuicool.com/articles/jaqQvq

    1. 处理所使用的函数叫getopt() ,因为是直接使用import 导入的getopt 模块,所以要加上限定getopt 才可以。
    2. 使用sys.argv[1:] 过滤掉第一个参数(它是执行脚本的名字,不应算作参数的一部分)。
    3. 使用短格式分析串"ho:" 。当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":" 号 。所以"ho:" 就表示"h" 是一个开关选项;"o:" 则表示后面应该带一个参数。
    4. 使用长格式分析串列表:["help", "output="] 。长格式串也可以有开关状态,即后面不跟"=" 号。如果跟一个等号则表示后面还应有一个参数 。这个长格式表示"help" 是一个开关选项;"output=" 则表示后面应该带一个参数。
    5. 调用getopt 函数。函数返回两个列表:opts 和args 。opts 为分析出的格式信息。args 为不属于格式信息的剩余的命令行参数。opts 是一个两元组的列表。每个元素为:( 选项串, 附加参数) 。如果没有附加参数则为空串'' 。
    6. 整个过程使用异常来包含,这样当分析出错时,就可以打印出使用信息来通知用户如何使用这个程序。
    import sys
    import getopt
    
    # run this file
    if __name__ =='__main__':
    	print(sys.argv)
            # python 1206.py -h -v 123 -o mark --output=123 --foo=345 --fre=12.3
    	opts, args = getopt.getopt(sys.argv[1:], 'hv:o:', ['output=', 'foo=', 'fre='])
    	print(opts,args)
    
    $ python 1206.py -h -v 123 -o mark --output=123 --foo=345 --fre=12.3
    ['1206.py', '-h', '-v', '123', '-o', 'mark', '--output=123', '--foo=345', '--fre=12.3']
    [('-h', ''), ('-v', '123'), ('-o', 'mark'), ('--output', '123'), ('--foo', '345'), ('--fre', '12.3')] []
    
    $ python 1206.py -h -v 123 -o mark --output=123 --foo=345 --fre=12.3 pppppp
    ['1206.py', '-h', '-v', '123', '-o', 'mark', '--output=123', '--foo=345', '--fre=12.3', 'pppppp']
    [('-h', ''), ('-v', '123'), ('-o', 'mark'), ('--output', '123'), ('--foo', '345'), ('--fre', '12.3')] ['pppppp']
    
  • 相关阅读:
    flask+Gunicorn+nginx部署
    配置Django实现数据库读写分离
    mysql分库分表
    python的反射
    flask-restful的使用
    spring源码(4)
    spring源码(3)
    spring源码(2)
    spring源码(1)
    tomcat8.5 配置数据源
  • 原文地址:https://www.cnblogs.com/wancy86/p/pycmd.html
Copyright © 2011-2022 走看看