python解析传入的命令行参数 argv
python解析命令行参数主要有三种方法:sys.argv、argparse解析、getopt解析
方法一:sys.argv —— 命令行执行:python test_命令行传参.py 1,2,3 1000
# test_命令行传参.py
import sys
def para_input():
print(len(sys.argv)) # 参数序列的长度,此时所有参数存放在一个list之中
if len(sys.argv) < 2:
sys.exit("python error")
script_name = sys.argv[0] #第一个参数指的是脚本名称
param_first = sys.argv[1] #第二个参数,此时也是一个str列表
param_second = sys.argv[2] #第三个参数 print(script_name)
print(type(script_name))
print(param_first)
print(type(param_first)) sss = param_first.split(',')
print(type(sss))
print(sss[0]) #传进来的都是默认str
print(sss[1])
print(sss[2]) print(param_second)
print(type(param_second))
print(script_name, param_first, param_second)
if __name__ == "__main__":
para_input()

方法二:argparse解析 —— 命令行执行:python test_命令行传参.py -n Peter 或者 python test_命令行传参.py -n Peter -d 20191120
# test_命令行传参.py
import argparse parser = argparse.ArgumentParser('传入参数:***.py')
parser.add_argument('-n','--name', default='Jack')
parser.add_argument('-d','--date', default='')
args = parser.parse_args()
print(args)
print(type(args))
name_ = args.name
date_ = args.date print(type(name_))
print(type(date_))
print('the people %s said that the date is %s'%(name_, date_))

方法三:getopt解析 —— 命令行执行:python test_命令行传参.py -f 游泳 -p 20191130 或者 python test_命令行传参.py --functionname=游泳 -p 20191130 或者 python test_命令行传参.py --functionname=游泳 --partdate=20191130
格式为:getopt.getopt(argv, options[, long_options])
该方法有两种传参形式:短 ('-') 和长 ('--')
options表示的是短选项,传入时需用(例如 :-f )形式传入参数,其中,有冒号(:) 表示 -f 之后必须传入值构成(例如:-f value),没有冒号则不用。
[, long_options]表示的是长选项,传入时需用(例如 :--f )形式传入参数,其中,有等于号(=) 表示 --f 之后必须传入值构成(例如:--f=value),没有等于号则不用。
使用时可以长短混合,比如多个参数,有的用长选项,有的用短选项;在程序中设置默认值之后,还可以不用传全部参数
import getopt
import sys def get_args_func(argv):
functionname = '拍照' #默认值
partdate = '' try:
opts, args = getopt.getopt(argv, "hf:p:", ["help", "functionname=", "partdate="])
#表示参数选项有:-h, -f, -p, --help, --functionname, --partdate,它们相互对应;该方法的返回值有两个元素: 第一个是(opt, value)元组的列表,第二个是一般参数列表,包含那些没有 '-' 或 '--' 的参数
except getopt.GetoptError:
print('Error: ***.py -f <functionname> -p <partdate>')
print(' or: ***.py --functionname=<functionname> --partdate=<partdate>')
sys.exit(2) for opt, arg in opts: #依次获取列表中的元组项
if opt in ("-h", "--help"):
print('***.py -f <functionname> -p <partdate>')
print('or: ***.py --functionname=<functionname> --partdate=<partdate>')
sys.exit()
elif opt in ("-f", "--functionname"):
functionname = arg
elif opt in ("-p", "--partdate"):
partdate = arg
print('-----------------------------------------------------------------------')
print(opts) #元组构成的列表
print(args) #args指的是不用 '-'或 '--'传递的参数,这里没有传递,所以为空
print('functionname为:', functionname)
print('partdate为:', partdate) if __name__ == '__main__':
get_args_func(sys.argv[1:]) #因为sys.argv[0]是脚本名称

参考:
https://blog.csdn.net/qq_34802511/article/details/93847436
https://blog.csdn.net/weixin_42357472/article/details/87874472
https://www.cnblogs.com/ouyangpeng/p/8537616.html
https://www.runoob.com/python/python-command-line-arguments.html
python解析传入的命令行参数 argv的更多相关文章
- Python 处理脚本的命令行参数-getopt
# -*- coding:utf-8 -*- import sys def test(): """ 参数列表:sys.argv 参数个数:len(sys.argv) 脚本 ...
- Python测试框架pytest命令行参数用法
在Shell执行pytest -h可以看到pytest的命令行参数有这10大类,共132个 序号 类别 中文名 包含命令行参数数量 1 positional arguments 形参 1 2 gene ...
- Python 处理脚本的命令行参数(二):使用click
安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...
- 关于命令行参数argv(《学习OpenCV》)
在<学习OpenCV>这本书中,很多示例代码都用到了命令行参数.作为新手,之前总是很困扰,不知道怎么用.偶然的机会终于略知一二了. 在Visual Studio中,我们可以自行设置命令行参 ...
- Python 的几个命令行参数
1) 以 $ python 方式启动 python 解释器,之后 import 一个模块,将生成 .pyc 文件. 2) 以 $ python -O 方式启动 python 解释器,之后 import ...
- Python 处理脚本的命令行参数(三):使用argparse
# coding:utf-8 # 测试argparse模块的基本用法 import argparse # 创建参数解析对象,并添加脚本用法帮助 parser = argparse.ArgumentPa ...
- python中处理命令行参数的模块optpars
optpars是python中用来处理命令行参数的模块,可以自动生成程序的帮助信息,功能强大,易于使用,可以方便的生成标准的,符合Unix/Posix 规范的命令行说明.使用 add_option() ...
- python命令行参数处理模块 optparse 使用参考
from optparse import OptionParser parser = OptionParser() parser.add_option( '-f', '--file', dest='f ...
- 如何编写一个带命令行参数的Python文件
看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...
随机推荐
- 转 perl DBI 总结
https://www.cnblogs.com/homezzm/archive/2011/07/22/2113618.html ##查看已经安装的包 #!/usr/bin/perluse strict ...
- Shenzhen Wanze Technology Co., Ltd.技术支持
本网页为Shenzhen Wanze Technology Co., Ltd.团队的技术支持网址,如果在我们开发的游戏中遇到任何问题,欢迎联系我们! QQ:2535510006 邮箱:25355100 ...
- 【模型压缩】MetaPruning:基于元学习和AutoML的模型压缩新方法
论文名称:MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning 论文地址:https://arxiv.org/ ...
- [LeetCode] 685. Redundant Connection II 冗余的连接之 II
In this problem, a rooted tree is a directed graph such that, there is exactly one node (the root) f ...
- robot:当用例失败时执行关键字(发送短信)
使用场景: 当用例失败时需要通知对应人员,则需要在Teardown中,使用关键字Run Keyword If Test Failed Send Message关键字为自定义关键字,${content} ...
- idea中默认maven配置
使用idea时,通常会配置自己的maven,但是发现每创建一个新项目都需要重新配置一遍,原来在idea中有一个默认配置,修改后就会全局生效,具体配置如下: 简单两步,配置完成.
- LInux学习之路
linux 简单操作命令 cd 进入目录 ls 查看 ll详细查看 man ls -- help touch mkdir find 正则表达式 ? [] [a-z][0-9] {字符串,} {a..z ...
- Module 'mysql' already loaded in Unknown on line 0解决方法
Module 'mysql' already loaded in Unknown on line 0解决方法 直接进入php.ini 把;extension=mysql.so注释掉就好了
- c++ std::cout重定向到文件
cout默认是与监视器(屏幕)相连,cout出来的内容会输出到屏幕上,通常是会在命令行窗口之中.但有时,我们希望将cout出来的具体日志.错误信息写到某个文件之中,而屏幕上仅仅显示出当前进行的任务,以 ...
- Eureka学习笔记
解决: 自我保护: 消费端的调用: Euraka的集群: