Python命令行参数argv和argparse该如何使用
作者:葛木瓜 发布时间:2022-04-05 01:38:52
标签:python,命令行参数,argv,argparse
概述
运行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'>
来源:https://www.cnblogs.com/freedomlidi/p/12680005.html


猜你喜欢
- 本文给大家介绍Python文件处理相关知识,具体内容如下所示:1.文件的常见操作文件是日常编程中常用的操作,通常用于存储数据或应用系统的参数
- 1、正则表达式包括两部分①定义正则表达式的规则;②正则表达式的模式(i/g/m);2、声明正则表达式① 字面量声明: var reg = /
- 客户端用一个html页面调用一个ashx文件(一般http处理程序),返回 json格式的自定义对象: html: <!DOCTYPE
- 近日在项目中遇到一个问题: 如何在报表中统计JSON格式存储的数据?例如有个调查问卷记录表,记录每个问题的答案。 其结构示意如下(横表设计)
- 数据平台 Kaggle 近日发布了 2017 机器学习及数据科学调查报告,这也是 Kaggle 首次进行全行业调查。调查共收到超过 1600
- 我的主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光?逻辑备份时,可不就是做整库扫描吗?若这样就会把内存吃光
- 另外他们列出的这些区别有些是蛮有意义的,有些可能由于他们本人的MySQL DBA的身份,对Oracle的理解有些偏差,有些则有凑数的嫌疑.
- 在密码学中,凯撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术。这个加密方法是以恺撒的名
- serializable 串行化(无问题)事务必须以顺序的方式执行,前一个事务提交之前后面的事务无法进行提交,最安全,但是不能并发操作,导致
- 限定范围拖拽目录代码实例与简易拖拽的差异下载源码链接 代码实例* { padding: 0; margin: 0;}#box1 {
- 主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记
- 在工作实践和学习中,如何开启 MySQL 数据库的远程登陆帐号算是一个难点的问题,以下内容便是在工作和实践中总结出来的两大步骤,能帮助DBA
- 使用软件:MySQLMigrationTool 提示数据过大,无法导入。修改my.cnf文件的max_allowed_packet = 10
- 本文实例为大家分享了pygame实现弹力球及其变速效果的具体代码,供大家参考,具体内容如下期望:1.球体接触到框体后反弹2.设置速度按键,按
- 连接远程服务器1、点击 Tools(工具),点击 部署Deployment(部署),点击Configuration(配置)2、新增一个SFT
- 1.虚拟机数据库设置--重启数据库(1)vi /etc/my.cnfbind = 0.0.0.0(2).远程不能用root用户连,得新建用户
- 听到一些人说现在做产品设计很没有成就感。没有什么创造力,除了抄袭模仿(称之为竞争分析)、千篇一律(又称规范标准)还有复杂的流程、粗制滥造的表
- 首先去官网下载两个架包链接如下:官网链接第一步:将两个架包解压到同一个database目录下。如截图所示:第二步:打开setup应用程序打开
- 本文实例讲述了python中getaddrinfo()基本用法。分享给大家供大家参考。具体如下:import sys, socketresu
- 读写文件首先看一个例子:f = open('thefile.txt','w') #以写方式打开,