时间:2021.02.22
环境:Python3.9
目的:
说明:
作者:Zhong QQ交流群:121160124 欢迎加入!
方法一:使用argparse.ArgumentParser()接收参数
import argparse
def valid_age(age):
if 0 < int(age) <= 200:
return int(age)
else:
raise ValueError
parser = argparse.ArgumentParser(description='接收参数')
parser.add_argument('-n', '--name', help='姓名(必选)')
parser.add_argument('-s', '--sex', dest="gender", help='性别')
# parser.add_argument('-a', '--age', choices=[i for i in range(0, 201)], help='年龄(可选) 范围0-200', type=int)
# 使用自定义的方法valid_age()验证参数选项
parser.add_argument('-a', '--age', help='年龄(可选) 范围0-200', type=valid_age)
parser.add_argument('-ip', help='IP', type=str, nargs='+') # nargs='+'意为可传递一个或多个ip参数 以空格分开 例如:127.0.0.1 192.168.1.2 nargs='*'意为0个或多个参数
parser.add_argument('-f', '--file', help='IP地址文件路径', default="./hosts.txt")
args = parser.parse_args()
print(args)
name = args.name # 获取-n指定的参数
gender = args.gender # 获取-s指定的参数
host_file = args.file # 获取主机地址文件的路径
print(name, type(name))
print(gender, type(gender))
with open(file=host_file, mode='r') as f:
host_text = f.read()
print(host_text)
方法二:使用sys接收参数
import argparse
import sys
parser = argparse.ArgumentParser(description='接收参数')
parser.add_argument('-n', help='姓名')
parser.add_argument('-a', help='年龄')
args1 = sys.argv[0]
name = sys.argv[1]
age = sys.argv[2]
print(args1, type(args1))
print(name, type(name))
print(age, type(age))
总结:
使用argparse.ArgumentParser()接收参数
-
输入-h 查看帮助信息
-
接收参数默认将被视为str类型 可使用type指定参数类型
-
参数选项应对应 未传递的参数值将为None 类型为NoneType
-
可选参数传递位置可改变
-
parser.add_argument('-n') 参数-n表示可选(可不传递此参数) n表示必选(必须传递此参数) 如果定义了如 --name 那么只能为-开始的标识如-n 必选参数也可以使用required=True指定 如parser.add_argument('-n', '--name', required=True, help='姓名(必选)')
-
如果同时指定了add_argument()的参数如add_argument('-n', '--name') 那么在获取参数值时应为--开始指定的如name = args.name
使用sys接收参数
-
传递的参数应与接收的参数个数对应 参数只能比接收的变量多而不能少 多的部分将忽略
关注微信公众号