python 命令行参数-Python命令行参数处理
sys模块
sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数
在Python交互式解释器中可以先导入sys模块 import sys,再输入 dir(sys) 查看sys模块所包含的全部程序单元(包括变量、函数等),或者 [i for i in dir(sys) if not i.startswith('_')] 过滤掉隐藏的单元
常用单元
sys.argv:以列表的方式获取运行 Python 程序的命令行参数存放其中。其中 sys.argv[0] 通常就是指该 Python程序本身,sys.argv[1] 代表第一个参数,sys.argv[2] 代表第二个参数,以此类推。类似于 Shell 中的 $0、$1、$2
import sys
print('程序名称为:{},第一个参数为:{},第二个参数为:{}'.format(sys.argv[0], sys.argv[1], sys.argv[2]))
sys.byteorder:显示本地字节序的指示符。如果本地字节序的大端模式,则该属性返回big,否则返回little
sys.copyright:该属性返回与 Python 解释器有关的版权信息
sys.executable:该属性返回 Python 解释器在磁盘上的存储路径
sys.exit():通过引发SystemExit异常来退出程序,将其放在try块中不能阻止finally块的执行。
sys.flags:该只读属性返回运行Python命令时指定的旗标
sys.getfilesystemencodiing():返回在当前系统中保存文件所用的字符集
sys.getrefcount():返回指定对象的引用计数。
sys.getrecursionlimit():返回Python解释器当前支持的递归深度。该属性可通过setrecursionlimit()方法重新设置
sys.getswitchinterval():返回在当前Python解释器中线程切换的时间间隔。该属性可通过setswitchinterval()函数改变
sys.implementation:返回当前Python解释器的实现
sys.maxsize:返回Python整数支持的最大值。在32位平台上,该属性值为 2 ×× 31-1;在64位平台上,该属性值为 2 ×× 63-1
sys.path:该属性指定Python查找模块的路径列表。程序可通过修改该属性来动态增加Python加载模块的路径
sys.platfrom:返回Python解释器所在的平台的标识符
sys.stdin:返回系统的标准输入流——一个类文件对象
sys.stdout:返回系统的标准输出流——一个类文件对象
sys.stderr:返回系统的错误输出流——一个类文件对象
sys.version:返回当前Python解释器的版本信息
sys.winver:返回当前Python解释器的主版本号
sys.copyright:返回当前Python解释器的版权信息
getopt模块
getopt是对sys.argv获取的命令行参数进行二次处理。在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能,比如 -u 代表后面是用户,-p 代表后面是密码。
举个例子
## fileName: test.py
import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "hu:", ["help", "file="])
print("opts输出结果为", opts)
print("args输出结果为", args)
调用getopt.getopt()会返回两个列表,第一个列表赋值给opts,第二个列表赋值给args:
opts:是 (选项, 选项值) 的元组为一个元素的列表。如果没有选项值为空字符串
args:存放没用选项单参数的列表。不属于格式信息的剩余的命令行参数
使用 sys.argv[1:] 是为过滤第一个参数(第一个参数为Python程序本身)
"hu:" 为定义短格式选项(-)。这里的h和u为两个选项。"h" 后面没有 ":" 表示h这个选项没有选项值,是作为开关选项(比如:有 -h 为显示帮助信息,没有 -h 为不显示帮助信息)。"u:" 后面有 ":" 为必须有选项值
["help", "file="] 为定义长格式选项(--)。这里的 "=" 和上面的短格式选项中的 ":" 一样
执行的例子
python test.py -h -u root --help --file=file.py file2.py
## 输出结果
opts输出结果为 [('-h', ''), ('-u', 'root'), ('--help', ''), ('--file', 'file.py')]
args输出结果为 ['file2.py']
optparse模块
optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数,自动生成帮助信息,不需要sys.argv
先简单写个例子
import optparse
usage="python %prog -u/--user -p/--password "
parser=optparse.OptionParser(usage) ## 写入上面定义的帮助信息
parser.add_option('-u', '--user',dest='User',type='string',help='target user', default='root')
parser.add_option('-p','--password',dest='Pwd',type='string',help='target password')
options, args=parser.parse_args()
print('options为', options)
print("用户名为", options.User)
print("密码为", options.Pwd)
print('args为', args)
add_option参数:
可以设置多个选项字符串,比如上面的 '-u', '--user' 这两个,用的时候任选其一
dest用于定义选项值存放的位置,作为后面的第一个字典(options)的键,值为命令输入的参数
type用于检测命令行输入参数的数据类型是否符合要求,有 string(字符串)、int(整数)、float(浮点数)等类型
help用于定义帮助信息
default设置默认值
帮助信息里面的选项字符串都在一个组中,我们可以创建不同的组用来给选项字符串分类
import optparse
usage="python %prog -u/--user -p/--password "
parser=optparse.OptionParser(usage) ## 写入上面定义的帮助信息
parser.add_option('-u', '--user',dest='User',type='string',help='target user', default='root')
parser.add_option('-p','--password',dest='Pwd',type='string',help='target password')
group = optparse.OptionGroup(parser, 'Debug Options') ## 创建group分组
parser.add_option_group(group) ## 把创建的组添加到parser中
group.add_option('-d', '--debug', action='store_true', help='Print debug information')
options, args=parser.parse_args()
action有三种类型:
action='store' 默认类型,可以忽略不写。用户必须给出一个明确的参数值,该类型定义了将实际参数值保存到dest指定变量中
action='store_true' 用户不需给出参数值,该类型定义了将布尔值true保存到dest指定的变量中(和上面getopt中不加 ':' 、'=')
action='store_false' 用户不需给出参数值,该类型定义了将布尔值false保存到dest指定的变量中
argparse模块
optparse模块的升级版,optparse被Python2.7和Python3.2弃用,所有有理由相信未来是属于argparse模块的
编辑帮助信息
import argparse
parser = argparse.ArgumentParser(description='帮助描述信息', prog='程序显示名称', usage='顶部显示信息,会覆盖prog', epilog='底部显示信息') ## 括号里面可以什么都不写,会走默认
parser.parse_args() ## 命令行参数解析后存放的位置
还有一些不常用的参数:
add_help = False 禁止显示帮助界面,只接收参数
argument_default=argparse.SUPPRESS 限制只能从命令行传递参数,程序中指定无效
allow_abbrev=False 例如--fooo,输入--foo,则不可以识别参数,默认可以
conflict_handler='resolve' 若参数重名,则不报错
添加命令行参数
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user', dest='User', type=str,default='root', help='target User')
parser.add_argument('-s', '--sex', dest='Sex', type=str, choices=['男', '女'], default='男', help='target Sex')
parser.add_argument('-n', '--number', dest='Num', nargs=2, required=True,type=int, help='target Two Numbers')
print(parser.parse_args()) ## 字典的方式接收参数
参数大多数和上面的optparse相同,不同的有:
choices:设置参数的范围,如果choice中的类型不是字符串,要指定type
nargs:设置参数接受的个数:
?:表示可有可无
+:表示至少一个
*:表示任意个
数字表示必须是指定数目个
python 命令行参数-Python命令行参数处理相关推荐
- 命令行运行Python脚本时传入参数的三种方式
三种常用的方式 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py 0,1,2 10 python script ...
- Python中最好用的命令行参数解析工具
Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...
- python 命令行参数-Python处理命令行参数
1. 将命令行参数保存在列表中,注意argv[0]是程序本身的名字: import sys print(sys.argv) print(sys.argv[1]) python argv.py loca ...
- python 命令行参数-python获取命令行参数的方法(汇总)
介绍python获取命令行参数的方法:getopt模和argparse模块. python版本:2.7 一.getopt模块 主要用到了模块中的函数: options, args = getopt.g ...
- python 命令行参数-Python3 命令行参数
Python3 命令行参数 Python 提供了 getopt 模块来获取命令行参数. $ python test.py arg1 arg2 arg3 Python 中也可以所用 sys 的 sys. ...
- python 命令行参数-Python 中最好用的命令行参数解析工具
Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要一个命令行参数解析的 ...
- 【Python】 linux中python命令的命令行参数
Python命令行参数 原文地址:http://blog.163.com/weak_time/blog/static/25852809120169333247925/ Python的命令行参数,提供了 ...
- 【Python】 配置解析ConfigParser 命令行参数解析optparser
ConfigParser ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了.这里的配置文件是指.ini的那种文件,基本格式如下 [section_a] ...
- python中config命令_【Python】 配置解析ConfigParser 命令行参数解析optparser
ConfigParser ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了.这里的配置文件是指.ini的那种文件,基本格式如下 [section_a] ...
最新文章
- python出现套接字创建不成功_python套接字协议不支持 - python
- oracle 最小系统,基于最小化CENTOS6.6最小化安装,oracle 11g 数据安装过程!
- 牛客小白月赛16 小石的签到题(博弈)
- 在DrawingVisual上绘制圆形的进度条,类似于IOS系统风格。
- 2016.6.29 tomcat卸载后在安装出现错误:failed to install tomcat7 service
- VC下Debug 和Release 区别【转】
- 判断可达性(基本的BFS练习)
- 一念心动,一生绵延——如何修复min pulse width?
- pandas小记:pandas汇总统计函数
- javascript--Math相关
- 数据库 SQL 学习(入门篇)
- java roll_java.util.Calendar roll()方法
- 《OpenCV 4.5计算机视觉开发实战(基于VC++)》示例代码免费下载
- 服务器芯片封装,【芯极速】干货|一文看懂集成电路芯片封装及芯片组!
- 全国ps计算机考试时间,全国计算机考试一级PS考试大纲
- “不能初始化photoshop,因为暂存盘已满”图文解决方案
- html 导航栏设计,在网页中设计导航菜单的三个原则(附案例)
- 大数据资源争夺战此起彼伏 对用户而言是福是祸?
- linux千兆网卡接百兆交换机,千兆交换机可以接百兆网线吗?
- R语言 图片识别文字 PNG JPG图片转文字 OCR tesseract包