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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix