首页 > 编程语言 >python3常用库之解析命令行参数argparse

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

时间:2024-10-09 16:13:12浏览次数:7  
标签:argparse py -- parser 参数 命令行 path python3

在命令行程序中需要获取命令行参数可以使用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)

 

标签:argparse,py,--,parser,参数,命令行,path,python3
From: https://www.cnblogs.com/caroline2016/p/18454505

相关文章

  • python3常用库之Base64编码
    Base64是一种用64个字符来表示任意二进制数据的方法。importbase64by="abc中文".encode()b=base64.b64encode(by)print(by)#b'abc\xe4\xb8\xad\xe6\x96\x87'print(b)#b'YWJj5Lit5paH'by2=base64.b64decode(b)print(by2)#b'abc\xe......
  • ROS2二十一讲学习——ROS2命令行操作
    Linux中的命令行命令行界面(Command-lineinterface,缩写:CLI):通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用......
  • python3 队列的使用
    在leetcode如下题目中使用队列637.二叉树的层平均值:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolutio......
  • Linux 学习笔记(二):深入理解用户管理、运行级别与命令行操作
    Linux学习笔记(二):深入理解用户管理、运行级别与命令行操作前置学习内容:Linux学习(一)1.用户管理1.1用户密码管理创建用户密码使用passwd命令可以为指定用户设置密码:sudopasswd`userName`密码找回当忘记密码时,可以采取以下步骤找回:在登录界面按e键进入编......
  • cmd发邮件:Windows命令行发送邮件的教程!
    cmd发邮件怎么通过命令行实现?如何使用CMD发送邮件?通过cmd发邮件,你可以在不打开任何邮件客户端的情况下,直接从命令行发送邮件。AokSend将详细介绍如何使用cmd发邮件功能,让你轻松掌握这一实用技能。cmd发邮件:基本原理cmd发邮件的基本原理是通过调用Windows系统中的邮件发送工......
  • Python3开启自带http服务
    有时候需要在局域网的电脑之间传送一些东西,或者在虚拟机之间传送一些东西。如果电脑上有安装了Python的话,其实非常方便,可以临时搭建一个HTTP服务器传送东西,一句命令就搞定了。而且这东西本身是Python内置的功能。1.基本方式Python中自带了简单的服务器程序,能较容易地打开服务......
  • 结对项目——实现一个自动生成小学四则运算题目的命令行程序
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里结对项目-作业-计科22级34班-班级博客-博客园(cnblogs.com)这个作业的目标结对项目——实现一个自动生成小学四则运算题目的命令行程序成员1陈奕奕32220045......
  • 结对项目:自动生成小学四则运算题目的命令行程序
    这个作业属于哪个课程计科22级12班这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13221姓名学号曾繁曦3122004841吴健民3122004667PSP表格一、流程图二、模块设计1.模块划分Main模块(Main.java)功能描述:程序的入......
  • 华为OD机试2024年E卷-转骰子[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )实
    题目描述骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(......
  • 华为OD机试2024年E卷-矩阵匹配[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )
    题目描述从一个N*M(N≤M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。输入描述输入矩阵要求:1≤K≤N≤M≤150输入格式:NMKN*M矩阵输出描述N*M的矩阵中可以选出M!/N!种组合数组,每个组合......