Python_内置模块2

版权声明:由于作者水平有限,文中难免有误,欢迎各位业界同仁斧正! https://blog.csdn.net/UserPython/article/details/80147435

getopt模块

该模块是通过sys.argv获取用户输入的参数而专门用来处理命令行参数的。

格式:getopt.getopt(args, shortopts, longopts = []),该函数有两个返回值Opts 和 Args

args    为被解析的参数列表:sys.argv[1:]    从1开始是为了过滤掉argv列表里的第一个元素(argv列表里的第一个元素为执行脚本的名字)

shortopts(-)    为短选项,当一个短选项后面不带附加参数时,在短选项处写上选项字符后,其后面不带“:”;如果短选项还有附加参数,则在短选项处写上选项字符同时在后面加一个“:”号,如“ho:”中表示“h”是一个不带参数的选项字符,“o:”则表示其后面应该带一个参数    [短选项的选项字符为一个字母,该字母一般为对应长选项字符的首字母]  

longopts = [](--)    为长选项列表,长选项后面不带附加参数时,在长选项处写上选项字符后,其后面不带“=”号;如果长选项还有附加参数,则在选项字符后面加上“=”号,如 ["help", "listen="] 中“help”是一个不带参数的选项字符,“listen=”则表示其后面应该带一个参数    [长选项的选项字符为一个单词]

Opts    为分析出的格式信息,是一个二元元组的列表;每个元素为:(选项,附加参数),如果没有附加参数则为空值。

Args    为不属于格式信息的剩余的命令行参数

在命令行中选项的写法要求

对于短选项,“-”号后面要紧跟一个选项字母,如果还有此选项的附加参数,可以用空格分开,也可以不分开,附加参数长度任意,也可以使用引号包括。如    -h、    -ho、    -hooo、    -h ooo、    -h "ooo"

对于长选项,“--”号后面要紧跟一个单词,如果还有此选项的附加参数,后面要紧跟“=”号,再加上参数,“=”号前后不能有空格。如    --help=file    (错误写法:-- help=file、 --help =file、 --help = file、 --help= file)

示例代码

import sys
import getopt

#命令行格式文档帮助
def usage():
	print(
		'''
		--------------info---------------
			-h or --help		查看文档帮助
			-w or --write		写入
			-a of --add			添加
			-r or --read		读
			-c of --close		关闭文件
		'''
		)
	sys.exit(0)

shortopts = "hw:a:rc" #可以写成"-h-w:-a:-r-c"
longtopts = ["help", "write=", "add=", "read", "close"] #这里的选项字符前一般不加--,如果加了会默认把--和选项字符作为一体,这样下面的opt就要改为----opt了

opts, args = getopt.getopt(sys.argv[1:], shortopts, longtopts)


#如果用户没有输入命令行,则提示用户输入“-h 或 --help查看文档帮助”
if ( len( sys.argv ) == 1 ):
	print("输入 -h 或 --help 查看文档帮助”")
	sys.exit(0)

try:
	for opt,val in opts:
		if opt in ("-h", "--help"):
			usage()
		elif opt in ("-w", "--write"):
			print("%s 写入的内容为----> %s" % (opt, val))
		elif opt in ("-a", "--add"):
			print("%s 添加的内容为----> %s" % (opt, val))
		elif opt in ("-r", "--read" ):
			print("%s 正在读文件" % opt )
		elif opt in ("-c", "--close"):
			print("%s 正在关闭文件" % opt )
except getopt.GetoptError as e:
	print(e)
	usage()

运行结果


猜你喜欢

转载自blog.csdn.net/UserPython/article/details/80147435