读取命令行参数
sys模块
参数个数 len(sys.argv)
脚本名 sys.argv[0]
第一个参数 sys.argv[1]
...-
getopt模块
用于获取命令行选项和参数,也就是sys.argv
支持短选项模式-和长选项模式--getopt.getopt(args,options[,ling_options])
Opts,args=getopt.getopt(sys.argv[1:],"ho:",["help","output="])
- sys.argv[1:]表示从第二个参数开始
- "ho:" 表示短选项,o后边加冒号表示有附加参数
- ["help","output="]表示长选项,output后加等号表示有附加参数
-
argparse模块
导入argparse模块
创建ArgumentParser对象,可以添加参数
parser=argparse.ArgumentParser(description='')
add_help默认是True-
使用add_argument添加参数
- 定位参数:parser.add_argument("echo",help="echo the string")
- 可选参数:parser.add_argument("--verbosity", help="increase output verbosity")
定位参数必须有
常用参数:
names or flags
action 默认是store
dest='a' 解析后的参数名称,通过args.a访问参数
type='int' 将输入的参数转化为int型
nargs 接受的参数的个数,接受一个或不需要参数时nars='?'
当没有参数时会从default中取值,*表示0或多个参数,+表示1或多个参数required 参数是否可省略,仅针对可选参数
示例程序
import sys,getopt
def usage():
print("Usage:%s [-a|-h|-t] [--help|--output] args...." %sys.argv[0])
if "__main__" == __name__:
try:
opts,args = getopt.getopt(sys.argv[1:], "hta:", ["help", "output="])
print("============ opts ==================")
print(opts)
print("============ args ==================")
print(args)
#check all param
for opt,arg in opts:
if opt in ("-h", "--help"):
usage()
sys.exit(1)
elif opt in ("-t", "--test"):
print("for test option")
elif opt in ("-a","--output"):
print("%s ==> %s" %(opt, arg))
except getopt.GetoptError:
print("getopt error!")
usage()
sys.exit(1)
#调用getopt 函数。函数返回两个列表:opts 和args
#opts 为分析出的格式信息。args 为不属于格式信息的剩余的命令行参数。
#opts 是一个两元组的列表。每个元素为:( 选项串, 附加参数) 。如果没有附加参数则为空串''
# -h -o file --help --output=out file1 file2
#opt=[('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]
#args=['file1', 'file2']
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('echo',help='echo the string here',nargs='*') # 定位参数
parser.add_argument('--square',help='display a square of a given number',type=int) # 可选参数
args=parser.parse_args()
print(args.echo)
if args.square:
print(args.square**2)