• 售前

  • 售后

热门帖子
入门百科

Python命令行参数argv和argparse该如何利用

[复制链接]
制菜参力 显示全部楼层 发表于 2021-10-25 19:23:41 |阅读模式 打印 上一主题 下一主题
概述


运行python脚本时通过下令行方式传入运行参数通常有以下两种自建方式:
      
  • sys.argv - 简洁  
  • argparse - 丰富,可自界说
下面详细说一下详细时使用
argv
  1. # test_argv.py
  2. import sys
  3. args = sys.argv
  4. print(f'args = {args}')
  5. >>> output
  6. ➜ git:(master) python3 test_argv.py     
  7. args = ['test_argv.py']
  8. ➜ git:(master) ✗ python3 test_argv.py 1 2 3
  9. args = ['test_argv.py', '1', '2', '3']
  10. ➜ git:(master) ✗ python3 test_argv.py 1 2 3 'hello world !'
  11. args = ['test_argv.py', '1', '2', '3', 'hello world !']
复制代码
从上面可以看出,通过
  1. argv
复制代码
方法获取的效果:
      
  • 返回为list  
  • 第一个参数为脚本本身  
  • 如参数中心带空格,用引号即可
argparse


argparse模块的功能较为丰富,其核心是通过add_argument方法自界说入参的:标志、格式、类型和范围等特性,常用如下:
      
  • *name_or_flag - 界说入参名或flag,如'-n', '--number'  
  • type - 指定入参类型  
  • choices - 指定入参范围  
  • default - 指定入参默认值  
  • required - 指定该餐素是否不要,布尔类型  
  • help - 参数概述
更多请参考: argparse
实例


test_argv.py
  1. import argparse
  2. # 初始化一个parser对象
  3. parser = argparse.ArgumentParser(description='test module of argparse')
  4. # 指定-n/--number的参数
  5. # 类型为int
  6. # help为简短地说明
  7. parser.add_argument(
  8.   '-n', '--number', type=int,
  9.   help='args of number'
  10. )
  11. # 指定-o/--output参数
  12. # 并限制类型为:['txt', 'csv', 'doc']
  13. parser.add_argument(
  14.   '-o', '--output', type=str,
  15.   choices=['txt', 'csv', 'doc'],
  16.   help='output method'
  17. )
  18. # 指定-d/--default参数
  19. # 并限制类型为:['txt', 'csv', 'doc']
  20. parser.add_argument(
  21.   '-d', '--default', type=int,
  22.   choices=[_ for _ in range(1, 10)],
  23.   default=5,
  24.   help='default'
  25. )
  26. # 指定位置参数foo
  27. parser.add_argument('foo')
  28. args = parser.parse_args()
  29. print(f'args = {args}')
  30. # 获取指定参数
  31. print(
  32.   f'number = {args.number}, type = {type(args.number)}\n'
  33.   f'output = {args.output}, type = {type(args.output)}\n'
  34.   f'default = {args.default}, type = {type(args.default)}\n'
  35.   f'foo = {args.foo}, type = {type(args.foo)}'
  36. )
复制代码
output
  1. # -h - 打印help
  2. ➜ git:(master) ✗ python3 test_argv.py -h
  3. usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
  4.           [-d {1,2,3,4,5,6,7,8,9}]
  5.           foo
  6. test module of argparse
  7. positional arguments:
  8. foo
  9. optional arguments:
  10. -h, --help      show this help message and exit
  11. -n NUMBER, --number NUMBER
  12.             args of number
  13. -o {txt,csv,doc}, --output {txt,csv,doc}
  14.             output method
  15. -d {1,2,3,4,5,6,7,8,9}, --default {1,2,3,4,5,6,7,8,9}
  16.             default
  17. # 不带参数运行,结果为None
  18. ➜ git:(master) ✗ python3 test_argv.py  
  19. args = Namespace(number=None, output=None)
  20. number = None
  21. output = None
  22. # 带参数运行
  23. ➜ git:(master) ✗ python3 test_argv.py -n 33 --output txt
  24. args = Namespace(number=33, output='txt')
  25. number = 33, type = <class 'int'>
  26. output = txt, type = <class 'str'>
  27. # 参数格式错误
  28. ➜ git:(master) ✗ python3 test_argv.py -n str     
  29. usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
  30. test_argv.py: error: argument -n/--number: invalid int value: 'str'
  31. ➜ git:(master) ✗ python3 test_argv.py -o excel   
  32. usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
  33. test_argv.py: error: argument -o/--output: invalid choice: 'excel' (choose from 'txt', 'csv', 'doc')
  34. # 默认参数
  35. ➜ git:(master) ✗ python3 test_argv.py   
  36. args = Namespace(default=5, number=None, output=None)
  37. number = None, type = <class 'NoneType'>
  38. output = None, type = <class 'NoneType'>
  39. output = 5, type = <class 'int'>
复制代码
以上就是Python下令行参数argv和argparse该怎样使用的详细内容,更多关于Python下令行参数argv和argparse的资料请关注脚本之家其它相关文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作