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


Posted in Python onFebruary 08, 2021

概述

运行python脚本时通过命令行方式传入运行参数通常有以下两种自建方式:

  • sys.argv - 简洁
  • argparse - 丰富,可自定义

下面详细说一下具体时使用

argv

# test_argv.py

import sys

args = sys.argv
print(f'args = {args}')

>>> output
➜ git:(master) python3 test_argv.py     
args = ['test_argv.py']
➜ git:(master) ✗ python3 test_argv.py 1 2 3
args = ['test_argv.py', '1', '2', '3']
➜ git:(master) ✗ python3 test_argv.py 1 2 3 'hello world !'
args = ['test_argv.py', '1', '2', '3', 'hello world !']

从上面可以看出,通过argv方法获取的结果:

  • 返回为list
  • 第一个参数为脚本本身
  • 如参数中间带空格,用引号即可

argparse

argparse模块的功能较为丰富,其核心是通过add_argument方法自定义入参的:标志、格式、类型和范围等特性,常用如下:

  • *name_or_flag - 定义入参名或flag,如'-n', '--number'
  • type - 指定入参类型
  • choices - 指定入参范围
  • default - 指定入参默认值
  • required - 指定该餐素是否不要,布尔类型
  • help - 参数概述

更多请参考: argparse

实例

test_argv.py

import argparse

# 初始化一个parser对象
parser = argparse.ArgumentParser(description='test module of argparse')

# 指定-n/--number的参数
# 类型为int
# help为简短地说明
parser.add_argument(
  '-n', '--number', type=int,
  help='args of number'
)

# 指定-o/--output参数
# 并限制类型为:['txt', 'csv', 'doc']
parser.add_argument(
  '-o', '--output', type=str,
  choices=['txt', 'csv', 'doc'],
  help='output method'
)

# 指定-d/--default参数
# 并限制类型为:['txt', 'csv', 'doc']
parser.add_argument(
  '-d', '--default', type=int,
  choices=[_ for _ in range(1, 10)],
  default=5,
  help='default'
)

# 指定位置参数foo
parser.add_argument('foo')

args = parser.parse_args()
print(f'args = {args}')

# 获取指定参数
print(
  f'number = {args.number}, type = {type(args.number)}\n'
  f'output = {args.output}, type = {type(args.output)}\n'
  f'default = {args.default}, type = {type(args.default)}\n'
  f'foo = {args.foo}, type = {type(args.foo)}'
)

output

# -h - 打印help
➜ git:(master) ✗ python3 test_argv.py -h
usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
          [-d {1,2,3,4,5,6,7,8,9}]
          foo

test module of argparse

positional arguments:
 foo

optional arguments:
 -h, --help      show this help message and exit
 -n NUMBER, --number NUMBER
            args of number
 -o {txt,csv,doc}, --output {txt,csv,doc}
            output method
 -d {1,2,3,4,5,6,7,8,9}, --default {1,2,3,4,5,6,7,8,9}
            default
# 不带参数运行,结果为None
➜ git:(master) ✗ python3 test_argv.py  
args = Namespace(number=None, output=None)
number = None
output = None

# 带参数运行
➜ git:(master) ✗ python3 test_argv.py -n 33 --output txt
args = Namespace(number=33, output='txt')
number = 33, type = <class 'int'>
output = txt, type = <class 'str'>

# 参数格式错误
➜ git:(master) ✗ python3 test_argv.py -n str     
usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
test_argv.py: error: argument -n/--number: invalid int value: 'str'
➜ git:(master) ✗ python3 test_argv.py -o excel    
usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
test_argv.py: error: argument -o/--output: invalid choice: 'excel' (choose from 'txt', 'csv', 'doc')

# 默认参数 
➜ git:(master) ✗ python3 test_argv.py   
args = Namespace(default=5, number=None, output=None)
number = None, type = <class 'NoneType'>
output = None, type = <class 'NoneType'>
output = 5, type = <class 'int'>

以上就是Python命令行参数argv和argparse该如何使用的详细内容,更多关于Python命令行参数argv和argparse的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python统计文本文件内单词数量的方法
May 30 Python
python获取代码运行时间的实例代码
Jun 11 Python
python 异或加密字符串的实例
Oct 14 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
Python读取JSON数据操作实例解析
May 18 Python
python3的pip路径在哪
Jun 23 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
python 实现Requests发送带cookies的请求
Feb 08 #Python
PyCharm2020.3.2安装超详细教程
Feb 08 #Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 #Python
如何用Python编写一个电子考勤系统
Feb 08 #Python
python编程的核心知识点总结
Feb 08 #Python
python上下文管理器异常问题解决方法
Feb 07 #Python
python中@contextmanager实例用法
Feb 07 #Python
You might like
php引用传值实例详解学习
2013/11/06 PHP
php中apc缓存使用示例
2013/12/25 PHP
javascript some()函数用法详解
2014/11/13 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python清理子进程机制剖析
2017/11/23 Python
python如何读取bin文件并下发串口
2019/07/05 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
工程采购员岗位职责
2014/03/09 职场文书
任命书格式
2014/06/05 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
整改落实自查报告
2014/11/05 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
材料员岗位职责范本
2015/04/11 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python