开发者

Python之OptionParser模块使用详解

开发者 https://www.devze.com 2022-12-10 10:53 出处:网络 作者: 热气球、
目录介绍基本用法参数选项OptionParser()parser.add_option()生成帮助错误提示代码示例总结介绍
目录
  • 介绍
  • 基本用法
  • 参数选项
    • OptionParser()
    • parser.add_option()
  • 生成帮助
    • 错误提示
      • 代码示例
        • 总结

          介绍

          OptionParser是一个更方便、更灵活、更强大的用于解析命令行选项的库,使用更具声明性的命令行分析样式:创建 OptionParser ,用选项填充它,并解析命令行。 optparse 允许用户以常规GNU/POSIX语法指定选项,并另外为您生成用法和帮助消息

          基本用法

          ①from optparse import OptionParser #导入模块
          ②parser = OptionParser(...)  #创建实例
          ③parser.add_option(...) #添加命令行参数
          ④(options, args) = parser.parse_args() #得到解析后的options对象,查看用户的输入
          

          参数选项

          OptionParser()

          parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
          #usage 打印用法
          例如: Usage: test.py [options] arg
          #version --version时输出版本信息
          例如:test.py 1.0
          #description  描述信息 --help时输出 
          例如:hello OptionParser!
          

          parser.add_option()

          parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
          #action  指明optparser解析参数时该如何处理。默认是store
           - store 表示命令行参数的值保存在options对象中。
           - store_false 中存在 -v verbose 将会返回false,也就是说verbose的值与-v后的具体参数具体项无关,只与-v是否存在有关
           - store_true  与action="store_false"类似,只有其中有参数-v存在时,则verbose的值为true,如果-v不存在,那么verbose的值为None
          #type 默认是string,也可以是 int、float等
          #dest 指定接收用户输入的值,当action="store"时可以将dest接收的值进打印或比较等其他处理
          例如:
          from optparse import OptionParser
          def main():
              parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
              parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
              parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
              parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
              (options, args) = parser.parse_args()
              print(options.filename)
          if __name__ == "__main__":
              main()
          #===test.py -f 1输出===#
          PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f 1
          1
          #default 设置默认值;如果在命令行上未看到该选项,则default的值为用于该选项的默认值。
          #help  --help时 输出该选项的解释说明
          例如:
          parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
          #===test.py -h输出===#
          -v, --verbose         这是帮助文档
          

          生成帮助

          #!/usr/bin/env python3.8.8
          # -*- encoding: utf-8 -*-
          '''
          @File    :   test.py
          @Time    :   2022/02/08 11:48:40
          @Author  :   热气球 
          @Version :   1.0
          @Contact :   17695691664@163.com
          '''
          from optparse import OptionParser
          def main():
              parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
              parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
              parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
              parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
              (options, args) = parser.parse_args()
              if len(args) != 1:
                  parser.error("incorrect number of arguments")
              if options.verbose:
                  print("reading %s..." % options.filename)
          
          if __name__ == "__main__":
              main()
          #===test.py -h输出===#
          PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py --help 
          Usage: test.py [options] arg
          hello OptionParser!
          Options:
            --version             show program's version number and exit
            -h, --help            show this help message and exit
            -f FILENAME, --file=FILENAME
                                  read data from FILENAME
            -v, --verbose         这是帮助文档
            -q, --quiet
          PS C:\Users\Administrator>
          
          

          错误提示

          此示例拿于官网手册

          #!/usr/bin/env python3.8.8
          # -*- encodhttp://www.cppcns.coming: utf-8 -*-
          '''
          @File    :   test.py
          @Time    :   2022/02/08 11:48:40
          @Author  :   热气球 
          @Version :   1.0
          @Contact :   17695691664@163.com
          '''
          from optparse import OptionParser
          def main():
              parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
              parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
              parser.add_option("-v", "--verbose",action="store_true", dest="verbose")
              parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
              (options, args) = parser.parse_args()
              if len(args) != 1:
                  parser.error("incorrect number of arguments")
              if options.verbose:
                  print("reading %s..." % options.filename)
          if __name__ == "__main__":
              main()
          #---示例代码解释---#
          -v参数 当指定-v时才可以运行此代码,因为-v存在时if options.verbose: 为True
          -q参数 当指定-q时表明退出执行,因编程客栈为action="store_false",所以-q不存在,if options.verbose: 为True
          -f参数 指定filename,需要配合-v参数一起使用; -v参数的具体选项值随意设置,存在即可。
          
          #===test.py -v True -f 1输出===#  
          reading 1...
          #===test.py -f 1输出===#  
          PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f 1                
          Usage: cov-run-desktop-test.py [options] arg
          cov-run-desktop-test.py: erro编程客栈r: incorrect number of arguments
          提示参数不够
          #===test.py -f 输出===#
          PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f  
          Usage: cov-run-desktop-test.py [options] arg
          c编程客栈ov-run-desktop-test.py: error: -f option requires 1 argument
          错误:-f选项需要1个参数
          

          代码示例

          #!/usr/bin/env python3.8.8
          # -*- encoding: utf-8 -*-
          '''
          @File    :   test.py
          @Time    :   2022/02/08 11:48:40
          @Author  :   热气球 
          @Version :   1.0
          @Contact :   17695691664@163.com
          '''
          
          from optparse import OptionPa编程客栈rser
          def main():
              parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
              parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
              parser.add_option("-v", "--verbose",action="store", default='reqiqiu',dest="verbosename",help="这是帮助文档")
              parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
              (options, args) = parser.parse_args()
              if len(args) != 1:
                  parser.error("incorrect number of arguments")
              if options.verbose:
                  print("reading %s..." % options.filename)
          
          if __name__ == "__main__":
              main()
          #===test.py -h输出===#
          PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -h     
          Usage: test.py [options] arg
          hello OptionParser!
          Options:
            --version             show program's version number and exit
            -h, --help            show this help message and exit
            -f FILENAME, --file=FILENAME
                                  read data from FILENAME
            -v VERBOSENAME, --verbose=VERBOSENAME
                                  这是帮助文档
            -q, --quiet
          
          #===test.py -v输出===#
          PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py --version
          test.py 1.0
          
          

          总结

          本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!      

          0

          精彩评论

          暂无评论...
          验证码 换一张
          取 消

          关注公众号