python3常用库之解析命令行参数argparse

在命令行程序中需要获取命令行参数可以使用sys库和argparse库。sys库可用于处理简单的命令行参数,argparse库可用于处理复杂的命令行参数。

# argparse 解析命令行参数

import argparse, sys


def main():
    # 定义一个ArgumentParser实例:参数分别为程序名、描述、说明信息
    parser = argparse.ArgumentParser(prog="test", description="test", epilog="version 1.01")
    # 定义位置参数,help指定帮助信息:
    parser.add_argument("path", help="路径")
    # 定义关键字参数:
    parser.add_argument("--host", default="localhost")
    # type指定参数必须为int类型,default指定参数可缺省,缺省时值为3306:
    parser.add_argument("--port", default="3306", type=int)
    # 此参数允许用户输入简写,required指定参数必需输入:
    parser.add_argument("-u", "--user", required=True)
    parser.add_argument("-p", "--password", required=True)
    # nargs指定接收的参数个数
    parser.add_argument("--lt", type=str, nargs=3)
    # choices指定参数值必需为选项中的一个
    parser.add_argument("--ch", type=str, choices=["cp", "de"])
    # action='store_true'指定参数不跟参数值,出现表示True
    parser.add_argument("--st", action="store_true", required=False)

    # 解析参数:如果参数有问题,则它打印出错误信息后,结束进程;如果参数是-h,则它打印帮助信息后,结束进程。
    args = parser.parse_args()

    # 打印参数:
    print("argparse parsed args:", args)


if __name__ == "__main__":
    print("sys argv:", sys.argv)

    main()

py test.py 

sys argv: ['learn-argparse.py']
usage: test [-h] [--host HOST] [--port PORT] -u USER -p PASSWORD [--lt LT LT LT] [--ch {cp,de}] [--st] path
test: error: the following arguments are required: path, -u/--user, -p/--password 

 

py test.py -u root -p hello --lt a b c --ch cp /path 

sys argv: ['learn-argparse.py', '-u', 'root', '-p', 'hello', '--lt', 'a', 'b', 'c', '--ch', 'cp', '/path']
argparse parsed args: Namespace(path='/path', host='localhost', port=3306, user='root', password='hello', lt=['a', 'b', 'c'], ch='cp', st=False)

 

py test.py -u root -p hello --lt a b c --ch cp --st /path 

sys argv: ['learn-argparse.py', '-u', 'root', '-p', 'hello', '--lt', 'a', 'b', 'c', '--ch', 'cp', '--st', '/path']
argparse parsed args: Namespace(path='/path', host='localhost', port=3306, user='root', password='hello', lt=['a', 'b', 'c'], ch='cp', st=True)

 

posted @   carol2014  阅读(106)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示