python命令和python3命令_Python3之命令⾏参数处理
toc
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.flags:该只读属性返回运⾏Python命令时指定的旗标
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解释器的主版本号
getopt模块
getopt是对sys.argv获取的命令⾏参数进⾏⼆次处理。在运⾏程序时,可能需要根据不同的条件,输⼊不同的命令⾏选项来实现不同的功能,⽐如 -u 代表后⾯是⽤户,-p 代表后⾯是密码。
举个例⼦
## fileName: test.py
import sys, getopt
opts, args = pt(sys.argv[1:], "hu:", ["help", "file="])
print("opts输出结果为", opts)
print("args输出结果为", args)
调⽤pt()会返回两个列表,第⼀个列表赋值给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() ## 命令⾏参数解析后存放的位置
还有⼀些不常⽤的参数:
python解释器下载
add_help = False 禁⽌显⽰帮助界⾯,只接收参数
argument_default=argparse.SUPPRESS 限制只能从命令⾏传递参数,程序中指定⽆效
allow_abbrev=False 例如--fooo,输⼊--foo,则不可以识别参数,默认可以
conflict_handler='resolve' 若参数重名,则不报错
添加命令⾏参数
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:设置参数接受的个数:
:表⽰可有可⽆
+:表⽰⾄少⼀个
* :表⽰任意个
数字表⽰必须是指定数⽬个
required:表⽰该参数是否可以不写,默认为 False

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。