一、使用click库的@click.command()
和 @click.option()装饰器
import click
@click.command()
@click.option("-env", default=None, help="输入运行环境:test 或 live")
@click.option("-m", default=False, type=bool, help="是否发送企业微信")
@click.option("-e", default=False, type=click.Choice(['False', 'True'], help="是否发送邮件")
def main(env, m, e):
"""主函数"""
if env:
print("运行环境:", env)
else:
print("未指定运行环境")
print("是否发送企业微信:", m)
print("是否发送邮件:", e)
if __name__ == "__main__":
main()
命令行运行:
python script.py -env test -m True -e False
输出:
运行环境: test
是否发送企业微信: True
是否发送邮件: False
二、使用argparse标准库
import argparse
# 创建解析器对象
parser = argparse.ArgumentParser()
# 添加命令行参数选项
parser.add_argument('-m', '--send-wechat', type=bool, help='Whether to send WeChat notification')
parser.add_argument('-e', '--send-email', type=bool, help='Whether to send email notification')
# 解析命令行参数(这种方式会只认当前定义的命令行参数,导致跟其他的库的命令行参数冲突,比如pytest单独执行某条用例时,会被报参数不存在)
# args = parser.parse_args()
# 使用 parse_known_args 解析命令行参数,该方法只解析已知的参数,而忽略未知的参数(推荐用这种)
args, unknown_args = parser.parse_known_args()
# 获取命令行参数的值并赋值给对应的变量
IS_SEND_WECHAT = args.send_wechat
IS_SEND_EMAIL = args.send_email
# 打印变量的值
print('IS_SEND_WECHAT:', IS_SEND_WECHAT)
print('IS_SEND_EMAIL:', IS_SEND_EMAIL)
命令行运行:
python3 script.py -m False -e True
输出:
IS_SEND_WECHAT: False
IS_SEND_EMAIL: True
三、使用sys.argv方法
import sys
# 获取命令行参数
arguments = sys.argv
# 打印命令行参数
for arg in arguments:
print(arg)
print('参数:',arg[1])
命令行运行
python script.py 100 a=1 nihao
输出:
['script.py', '100', 'a=1', 'nihao']
'参数':'a=1'