百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

[编程基础] Python命令行解析库argparse学习笔记

off999 2024-10-26 12:03 103 浏览 0 评论


Python argparse教程展示了如何使用argparse模块解析Python中的命令行参数。

文章目录

  • 1 使用说明
  • 1.1 Python argparse可选参数
  • 1.2 Python argparse必需参数
  • 1.3 Python argparse位置参数
  • 1.4 Python argparse dest
  • 1.5 Python argparse type
  • 1.6 Python argparse default
  • 1.7 Python argparse metavar
  • 1.8 Python argparse append action
  • 1.9 Python argparse choices
  • 2 参考

1 使用说明

argparse模块使编写用户友好的命令行界面变得容易。它从中解析定义的参数sys.argv。该模块还自动生成帮助和用法消息,并在用户为程序提供无效参数时发出错误。使用ArgumentParser创建分析器,并使用add_argument()添加新参数变量。参数可以是optional(可选), required(必须), or positional(位置)。add_argument()中的常用参数设定值如下所示:

  • name or flags,输入参数的名字或者列表,例如 foo 或者 -f, --foo;
  • action,命令行遇到参数时的动作,默认值是 store;
  • store_const,表示赋值为const;
  • append,将输入的值存储成列表,也就是如果参数重复则会保存多个值;
  • append_const,将参数规范中定义的一个值保存到一个列表;
  • count,存储遇到的次数;
  • nargs,应该读取的命令行参数个数;
  • const,action 和 nargs 所需要的常量值;
  • defaul,参数的默认值;
  • type,命令行参数应该被转换成的类型;
  • choices,可用的参数集合;
  • required,该参数为必选输入参数;
  • help,帮助说明;
  • metavar,输入参数的替代名
  • dest,被添加到 parse_args()所返回对象上的属性名;

1.1 Python argparse可选参数

下面的示例创建test1.py,内容为一个简单的参数解析器。add_argument添加参数-o和–out两个参数,参数效果一样,都是可选参数。前一个为参数简写只有一个字母,后一个为全参数。如果输入参数则输出This is some output。还有一个add_argument还有一个固定参数action=‘store_true’,表示命令行遇到参数时的操作,store将参数设为const,默认值是 store。参数用解析parse_args()。解析后的参数作为对象属性存在。

#!/usr/bin/env python

import argparse


parser = argparse.ArgumentParser()

# action 命令行遇到参数时的动作
# -o为短参数,--output长参数
parser.add_argument('-o', '--output', action='store_true', help="shows output")

# parse_args()解析参数
args = parser.parse_args()

# 如果存在output
if args.output:
   print("This is some output")
else:
   print("This is not some output")
# 执行test1.py文件
# 输入--output参数
!python test1.py --output
print('-'*50)
# 输入-o参数
!python test1.py -o
print('-'*50)
# 什么都不输入
!python test1.py
print('-'*50)
# 输入--help参数
!python test1.py --help
!python test1.py -h
This is some output
--------------------------------------------------
This is some output
--------------------------------------------------
This is not some output
--------------------------------------------------
usage: test1.py [-h] [-o]

optional arguments:
  -h, --help    show this help message and exit
  -o, --output  shows output
usage: test1.py [-h] [-o]

optional arguments:
  -h, --help    show this help message and exit
  -o, --output  shows output

1.2 Python argparse必需参数

下面的示例创建test2.py,.add_argument()设定required = True,表示必须参数,该示例必须name指定选项。否则失败。

#!/usr/bin/env python

import argparse

# 创建解析器
parser = argparse.ArgumentParser()
# 设置--name为必须参数  
parser.add_argument('--name', required=True)
# 解析参数
args = parser.parse_args()

print('Hello {}'.format(args.name))
# 执行test2.py文件
# 不输入参数
!python test2.py
print('-'*50)
# 输入参数
!python test2.py --name hello
usage: test2.py [-h] --name NAME
test2.py: error: the following arguments are required: --name
--------------------------------------------------
Hello hello

1.3 Python argparse位置参数

下面的示例创建test3.py,位置参数不需要前缀符号,直接输入参数值。

#!/usr/bin/env python

import argparse

# positional args

parser = argparse.ArgumentParser()
   
parser.add_argument('name')
parser.add_argument('age')

args = parser.parse_args()

print('{} is {} years old'.format(args.name,args.age))
!python test3.py -h
print('-'*50)
!python test3.py --name
print('-'*50)
# 输入参数
!python test3.py "jack" 12
usage: test3.py [-h] name age

positional arguments:
  name
  age

optional arguments:
  -h, --help  show this help message and exit
--------------------------------------------------
usage: test3.py [-h] name age
test3.py: error: the following arguments are required: name, age
--------------------------------------------------
jack is 12 years old

1.4 Python argparse dest

dest选项为add_argument()参数指定名称。如果未给出,则从选项中推断出来。下面的示例创建test4.py,将-n的参数名称设定为now。

#!/usr/bin/env python

import argparse

parser = argparse.ArgumentParser()
   
parser.add_argument('-n', dest='now', action='store_true', help="shows now")

args = parser.parse_args()

# -n代表now
if args.now:
   print(args.now)
# 运行文件
!python test4.py -n
True

1.5 Python argparse type

通过type参数确定参数类型。下面的示例创建test5.py。程序显示从-100到100的n个随机整数。

#!/usr/bin/env python

import argparse
import random


parser = argparse.ArgumentParser()

# type确定参数的类型值
parser.add_argument('-n', type=int, required=True, 
    help="define the number of random integers")
args = parser.parse_args()

n = args.n

# 输出随机数
for i in range(n):
    print(random.randint(-100, 100))
# 运行程序
!python test5.py -n 5
34
-81
76
-62
-66

1.6 Python argparse default

default如果未指定该值,则该选项指定默认值。下面的示例创建test6.py。该示例计算指数,不需要指数值;如果未给出,则默认值为2。如果输入参数没有必选参数,可以直接运行代码输出值;如果想在代码内改变值,直接参数复制即可如arg.b=2。

#!/usr/bin/env python

import argparse

parser = argparse.ArgumentParser()
# required设置强制性参数,设置输入参数
parser.add_argument('-b', type=int, required=True, help="defines the base value")
# default设置默认参数,设置指数值
parser.add_argument('-e', type=int, default=2, help="defines the exponent value")
args = parser.parse_args()

val = 1

base = args.b
exp = args.e

for i in range(exp):
    val *= base

print(val)
# 使用 默认参数
!python test6.py -b 2
print('-'*50)
# 给定默认参数
!python test6.py -b 2 -e 3
4
--------------------------------------------------
8

1.7 Python argparse metavar

metavar选项为错误的期望值命名,并提供帮助输出。下面的示例创建test7.py。该示例设置期望值为value。默认名称是v。

#!/usr/bin/env python

import argparse

parser = argparse.ArgumentParser()
   
parser.add_argument('-v', type=int, required=True, metavar='value', 
    help="computes cube for the given value")
args = parser.parse_args()

print(args)

val = args.v

print(val * val * val)
!python test7.py -h
usage: test7.py [-h] -v value

optional arguments:
  -h, --help  show this help message and exit
  -v value    computes cube for the given value

1.8 Python argparse append action

append操作允许对重复选项进行分组。下面的示例创建test8.py。

#!/usr/bin/env python

import argparse

# append action allows to group repeating
# options

parser = argparse.ArgumentParser()
   
parser.add_argument('-n', '--name', dest='names', action='append', 
    help="provides names to greet")

args = parser.parse_args()

names = args.names

# 分组输出
for name in names:
    print('Hello {}!'.format(name))
!python test8.py -n Jack -n Rosy --name Jane
Hello Jack!
Hello Rosy!
Hello Jane!

1.9 Python argparse choices

choices选项将参数限制为给定列表。在示例test9.py中,now选项可以接受以下值:1,2,3。

#!/usr/bin/env python

import argparse
import datetime
import time

parser = argparse.ArgumentParser()

parser.add_argument('--now', dest='format', type=int, choices=[1, 2, 3],help="shows num in given format")

args = parser.parse_args()
fmt = args.format

print(fmt)
# 输入在可选范围内值
!python test9.py --now 1
print('-'*50)
# 输入不在可选范围内值
!python test9.py --now 4
print('-'*50)
# 不输入
!python test9.py
1
--------------------------------------------------
usage: test9.py [-h] [--now {1,2,3}]
test9.py: error: argument --now: invalid choice: 4 (choose from 1, 2, 3)
--------------------------------------------------
None

2 参考

  • ?Python argparse tutorial??
  • ??argparse模块-add_argument方法??
  • add_argument() 的使用方法

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: