argparse教程

article/2025/8/15 6:49:58

argparse教程

          • argparse是用来干什么的?
          • 位置参数和可选参数
          • 测试argparse的功能
            • test1
            • test2
            • test3
            • test4
            • test5-可选参数
            • test6-action选项
            • test7-短选项
            • test8-同时使用位置参数和可选参数
            • test9
            • test10-限定参数的取值范围
            • test11-action="count"
            • test12-None无法和int进行比较
            • test13-default参数,修改None的值为default指定的参数
            • test14-输出运行文件名
            • test15
            • test16
          • 在训练时的使用方法
          • 参考教程资料

argparse是用来干什么的?

我觉得是想在命令行运行训练过程的同时输入训练设置也就是python3 train.py + 参数设置

得到的args的数据类型为<class 'argparse.Namespace'>

得到的args.__dict__数据类型为<class 'dict'>

位置参数和可选参数

存在着两种数据类型:位置参数和可选参数:位置参数应该是必须要传递的参数,而可选参数是可以选择传递或者不传递的参数。

测试argparse的功能
test1
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
$python3 learn_argparse.py
没有任何输出$python learn_argparse.py --help 
$python learn_argparse.py -h
输出内容:
usage: learn_argparse.py [-h]optional arguments:-h, --help  show this help message and exit

小结:只能使用python learn_argparse.py -h命令

test2
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")#用于指定程序能够接受哪些命令行选项。在这个例子中,将选项命名为 echo,与其功能一致。
args = parser.parse_args()
print(args.echo)        #将变量输出
$python3 learn_argparse.py
输出内容:
usage: learn_argparse.py [-h] echo
learn_argparse.py: error: the following arguments are required: echo$python learn_argparse.py --help 
$python learn_argparse.py -h
输出内容:
usage: learn_argparse.py [-h] echopositional arguments:echooptional arguments:-h, --help  show this help message and exit$python3 prog.py foo
foo

小结:这个python的功能挺简单的,主要是为了实现将在命令行输入的参数使用print函数输出

test3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print(args.echo)
$ python learn_argparse.py -h
输出:
usage: learn_argparse.py [-h] echopositional arguments:echo        echo the string you use hereoptional arguments:-h, --help  show this help message and exit

小结:help选项能够为自己增加的命令,显示注释信息(也就是这个命令是用于干什么的)

test4
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",type=int)
args = parser.parse_args()
print(args.square**2)
$ python learn_argparse.py -h
usage: learn_argparse.py [-h] squarepositional arguments: square      display a square of a given numberoptional arguments:-h, --help  show this help message and exit$ python learn_argparse.py 4
16

小结:type表示指定传递给我们python代码的参数数据类型,默认为str

test5-可选参数
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbosity", help="increase output verbosity",type=int)
args = parser.parse_args()
if args.verbosity:print("verbosity turned on")
$ python learn_argparse.py -h
usage: learn_argparse.py [-h] [--verbosity VERBOSITY]optional arguments:-h, --help            show this help message and exit--verbosity VERBOSITY$ python learn_argparse.py --verbosity 1
verbosity turned on$ python learn_argparse.py --verbosity 0
没有任何输出$ python learn_argparse.py --verbosity                     # 这个地方必须传递参数值
usage: learn_argparse.py [-h] [--verbosity VERBOSITY]
learn_argparse.py: error: argument --verbosity: expected one argument

小结:展示可选参数的添加和使用方法

test6-action选项
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbose", help="increase output verbosity",action="store_true")
args = parser.parse_args()
if args.verbose:print("verbosity turned on")
$ python learn_argparse.py --verbose 0
usage: learn_argparse.py [-h] [--verbose]
learn_argparse.py: error: unrecognized arguments: 0$ python learn_argparse.py --verbose 1
usage: learn_argparse.py [-h] [--verbose]
learn_argparse.py: error: unrecognized arguments: 1$ python learn_argparse.py --verbose
verbosity turned on$ python learn_argparse.py -h
usage: learn_argparse.py [-h] [--verbose]optional arguments:-h, --help  show this help message and exit--verbose   increase output verbosity

小结:使用action关键字,赋值为store_true。表示当这一选项存在时,为args.vebose赋值为True,没有指定的话则赋值为False

并且不能为--verbose指定值,否则会报错。

test7-短选项
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="increase output verbosity",action="store_true")
args = parser.parse_args()
if args.verbose:print("verbosity turned on")
$ python learn_argparse.py -v
verbosity turned on$ python learn_argparse.py --verbose
verbosity turned on$ python learn_argparse.py -h
usage: learn_argparse.py [-h] [-v]optional arguments:-h, --help     show this help message and exit-v, --verbose  increase output verbosity

小结:短选项-v--verbose的简写,在使用上没有区别

test8-同时使用位置参数和可选参数
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,help="display a square of a given number")
parser.add_argument("-v", "--verbose", action="store_true",help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbose:print("the square of {} equals {}".format(args.square, answer))
else:print(answer)
$ python learn_argparse.py 4
16$ python learn_argparse.py 4 -v
the square of 4 equals 16$ python learn_argparse.py -v 4
the square of 4 equals 16

小结:注意可选参数位置参数顺序无关紧要

test9
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int,help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:print("{}^2 == {}".format(args.square, answer))
else:print(answer)
$ python learn_argparse.py -v 1 4
4^2 == 16$ python learn_argparse.py -v 2 4
the square of 4 equals 16$ python learn_argparse.py -v 3 4
16当不输入-v参数时,args.verbosity的值为None

小结:运行.py文件不输入可选参数的值时,可选参数的取值为None

test10-限定参数的取值范围
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:print("{}^2 == {}".format(args.square, answer))
else:print(answer)
$ python learn_argparse.py -v 3 4
usage: learn_argparse.py [-h] [-v {0,1,2}] square
learn_argparse.py: error: argument -v/--verbosity: invalid choice: 3 (choose from 0, 1, 2)

小结:注意这一改变同时反应在错误信息和帮助信息里。

test11-action=“count”
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,help="display the square of a given number")
parser.add_argument("-v", "--verbosity", action="count",help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:print("{}^2 == {}".format(args.square, answer))
else:print(answer)
$ python learn_argparse.py -v 3 4
usage: learn_argparse.py [-h] [-v] square
learn_argparse.py: error: unrecognized arguments: 4$ python learn_argparse.py -v 4
4^2 == 16$ python learn_argparse.py -vv 4
the square of 4 equals 16$ python learn_argparse.py 4
16$ python learn_argparse.py -vvv 4
16

小结我们引入了另一种动作 count,来数某一个可选参数出现了几次:

test12-None无法和int进行比较
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,help="display a square of a given number")
parser.add_argument("-v", "--verbosity", action="count",help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2# bugfix: replace == with >=
if args.verbosity >= 2:print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity >= 1:print("{}^2 == {}".format(args.square, answer))
else:print(answer)
$ python learn_argparse.py -vvv 4
the square of 4 equals 16$ python learn_argparse.py -vv 4
the square of 4 equals 16$ python learn_argparse.py -v 4
4^2 == 16$ python learn_argparse.py 4
Traceback (most recent call last):File "learn_argparse.py", line 11, in <module>if args.verbosity >= 2:
TypeError: '>=' not supported between instances of 'NoneType' and 'int'

小结:None类型数据和int类型数据无法进行比较。

test13-default参数,修改None的值为default指定的参数
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,help="display a square of a given number")
parser.add_argument("-v", "--verbosity", action="count", default=0,help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity >= 2:print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity >= 1:print("{}^2 == {}".format(args.square, answer))
else:print(args.verbosity)
$ python learn_argparse.py 4
0
test14-输出运行文件名
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
parser.add_argument("-v", "--verbosity", action="count", default=0)
args = parser.parse_args()
answer = args.x**args.y
if args.verbosity >= 2:print("Running '{}'".format(__file__))
if args.verbosity >= 1:print("{}^{} == ".format(args.x, args.y), end="")
print(answer)
$ python learn_argparse.py -vv 2 3
Running 'learn_argparse.py'
2^3 == 8
test15

​ 让我们再介绍第三个方法 add_mutually_exclusive_group()。 它允许我们指定彼此相互冲突的选项。 让我们再更改程序的其余部分以便使用新功能更有意义:我们将引入 --quiet 选项,它将与 --verbose 正好相反:

import argparseparser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
answer = args.x**args.yif args.quiet:print(answer)
elif args.verbose:print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:print("{}^{} == {}".format(args.x, args.y, answer))
$ python learn_argparse.py -v 2 3
2 to the power 3 equals 8$ python learn_argparse.py -q 2 3
8$ python learn_argparse.py 2 3
2^3 == 8$ python learn_argparse.py -h
usage: learn_argparse.py [-h] [-v | -q] x ycalculate X to the power of Y                      # 放在description里面的内容positional arguments:x              the basey              the exponentoptional arguments:-h, --help     show this help message and exit-v, --verbose-q, --quiet
test16
# my_test.py
# code from deepgcn_sparse
import argparseclass OptInit:def __init__(self):parser = argparse.ArgumentParser(description='PyTorch implementation of Deep GCN For semantic segmentation')# baseparser.add_argument('--phase', default='test', type=str, help='train or test(default)')parser.add_argument('--use_cpu', action='store_true', help='use cpu?')parser.add_argument('--exp_name', type=str, default='sem_seg_sparse', help='prefix of saved file')parser.add_argument('--root_dir', type=str, default='log', help='the dir of experiment results')# dataset argsparser.add_argument('--data_dir', type=str, default='/data/deepgcn/S3DIS')parser.add_argument('--batch_size', default=16, type=int, help='mini-batch size (default:16)')parser.add_argument('--in_channels', default=9, type=int, help='the channel size of input point cloud ')# train argsparser.add_argument('--total_epochs', default=100, type=int, help='number of total epochs to run')parser.add_argument('--save_freq', default=1, type=int, help='save model per num of epochs')parser.add_argument('--iter', default=0, type=int, help='number of iteration to start')parser.add_argument('--lr_adjust_freq', default=20, type=int, help='decay lr after certain number of epoch')parser.add_argument('--lr', default=1e-3, type=float, help='initial learning rate')parser.add_argument('--lr_decay_rate', default=0.5, type=float, help='learning rate decay')parser.add_argument('--print_freq', default=100, type=int, help='print frequency of training (default: 100)')parser.add_argument('--postname', type=str, default='', help='postname of saved file')parser.add_argument('--multi_gpus', action='store_true', help='use multi-gpus')parser.add_argument('--seed', type=int, default=0, help='random seed')# test argsparser.add_argument('--no_clutter', action='store_true', help='no clutter? set --no_clutter if ture.')# model argsparser.add_argument('--pretrained_model', type=str, help='path to pretrained model(default: none)', default='')parser.add_argument('--k', default=16, type=int, help='neighbor num (default:16)')parser.add_argument('--block', default='res', type=str, help='graph backbone block type {plain, res, dense}')parser.add_argument('--conv', default='edge', type=str, help='graph conv layer {edge, mr}')parser.add_argument('--act', default='relu', type=str, help='activation layer {relu, prelu, leakyrelu}')parser.add_argument('--norm', default='batch', type=str, help='{batch, instance} normalization')parser.add_argument('--bias', default=True,  type=bool, help='bias of conv layer True or False')parser.add_argument('--n_filters', default=64, type=int, help='number of channels of deep features')parser.add_argument('--n_blocks', default=28, type=int, help='number of basic blocks')parser.add_argument('--dropout', default=0.3, type=float, help='ratio of dropout')args = parser.parse_args()self._print_args()def _print_args(self):logging.info("==========       args      =============")for arg, content in self.args.__dict__.items():logging.info("{}:{}".format(arg, content))logging.info("==========     args END    =============")logging.info("\n")

注意:当这样设置代码时,输入python my_test.py --help,没有任何反应,需要在文件中加入才行

if __name__ == '__main__':optinit = OptInit()        

在这里插入图片描述

这样我们有会有一个疑问,那么我在其他的python文件中定义这个类是否也会有类似输入python my_test_others.py --help,然后输出帮助信息那?开整

# my_test_others.py
from my_test import OptInitoptinit = OptInit() 

在这里插入图片描述
哈哈哈,输出果然是这样,也就是说类中的定义argparse是属于类的

在训练时的使用方法
parser = argparse.ArgumentParser()
parser.add_argument('--no-cuda', action='store_true', default=False,help='Disables CUDA training.')
parser.add_argument('--fastmode', action='store_true', default=False,help='Validate during training pass.')
parser.add_argument('--seed', type=int, default=42, help='Random seed.')
parser.add_argument('--epochs', type=int, default=200,help='Number of epochs to train.')
parser.add_argument('--lr', type=float, default=0.01,help='Initial learning rate.')
parser.add_argument('--weight_decay', type=float, default=5e-4,help='Weight decay (L2 loss on parameters).')
parser.add_argument('--hidden', type=int, default=16,help='Number of hidden units.')
parser.add_argument('--dropout', type=float, default=0.5,help='Dropout rate (1 - keep probability).')args = parser.parse_args()args.cuda = not args.no_cuda and torch.cuda.is_available()    # 还可以定义变量
参考教程资料

Argparse 教程

pygcn/train.py


http://chatgpt.dhexx.cn/article/C67FJjHi.shtml

相关文章

argparse 模块详解

文章目录 1. argparse 模块简介2. 未使用argparse示例3. 使用argparse示例3.1 argparse简单示例3.2 argparse进阶示例3.2.1 可选参数设置3.2.2 可选参数引用名3.2.3 清除帮助中的参数名信息3.2.4 必选参数设置3.2.5 列表参数&#xff08;多参数&#xff09;传入设置3.2.6 互斥参…

python中的argparse基本用法

1、argparse是一个python模块&#xff0c;用途是&#xff1a;命令行选项、参数和子命令的解释。 2、使用步骤&#xff1a; 导入argparse模块&#xff0c;并创建解释器添加所需参数解析参数 3、用法示例&#xff1a; import argparse# 1.创建解释器 parser argparse.Argume…

argparse简介

一、argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块&#xff0c;argparse 模块可以让人轻松编写用户友好的命令行接口&#xff0c;能够帮助程序员为模型定义参数。 argparse定义四个步骤 导入argparse包 ——import argparse创建一个命令行解析…

绕过tp路由器管理密码_TP LINK路由器的登陆网址是什么?

旧版本的TP-Link路由器的登陆网址是&#xff1a;192.168.1.1&#xff1b;新版本的TP-Link路由器的登陆网址是&#xff1a;http://tplogin.cn&#xff1b;TP-Link迷你路由器的登陆网址是&#xff1a;192.168.1.253。接下来详细介绍&#xff1a; 一、旧版本的TP-Link路由器的登陆…

【TP5.1】Config的用法

需要读取某个一级配置的所有配置参数&#xff0c;可以使用 需要引入 use Config; 使用助手函数&#xff1a; config(app.name) config(app.); 这种类型的使用app. 这种类型的使用.code即可

TP LINK GRE L2TP介绍

(Virtual Private Network, 虚拟专用网络)是一个建立在公用网&#xff08;通常是因特网&#xff09;上的专用网络&#xff0c;但因为这个专用网络只是逻辑存在并没有实际物理线路&#xff0c;故称为虚拟专用网。 随着因特网的发展壮大&#xff0c;越来越多的数据需要在因特网上…

百信计算机管理员登录账号密码,tplogin.cn管理员密码是多少 | 192路由网

TP-Link TL-WR745N无线路由器配置简单&#xff0c;不过对于没有网络基础的用户来说&#xff0c;完成路由器的安装和无线网络密码和名称的设置&#xff0c;仍然有一定的困难&#xff0c;本文www.192luyou.com介绍TP-Link TL-WR745N无线路由器无线网络密码和名称的设置方法! TP-L…

Tplmap用法

Tplmap下载&#xff1a;安装包可查看我的下载资源页面 Python环境&#xff1a;2.7 (这一点很重要很重要很重要) Python所需要的包&#xff1a; PyYAML5.1.2 certifi2018.10.15 chardet3.0.4 idna2.8 requests2.22.0 urllib31.24.1 wsgiref0.1.2 &#xff08;这些包只有在pyth…

TPlinker解读

参考&#xff1a; 关系抽取之TPLinker解读加源码分析 TPLinker 实体关系抽取代码解读 实体关系联合抽取&#xff1a;TPlinker TPLinker中文注释版 Tagging TPLinker模型需要对关系三元组(subject, relation, object)进行手动Tagging&#xff0c;过程分为三部分&#xff1a; &…

TP6中GatewayWorker的用法

一、参考网站 tp开发手册&#xff1a;https://www.kancloud.cn/manual/thinkphp6_0/1147857 workman与tp框架结合参考&#xff1a;http://doc2.workerman.net/work-with-other-frameworks.html 开发手册只介绍了Workman的使用方法&#xff0c;没有介绍GatewayWorker的使用方…

tp5框架Fastadmin中的Log日志如何去用

首先fastadmin是基于tp5的框架进行开发,在我们使用fastadmin写好接口后,接口在测试时没有任何问题,当前端进行访问时却无法进行交互,这是就可以使用tp5框架自带的Log日志; 下面就为大家介绍Log的使用: use think\Log; 在你使用的php文件下引入Log日志。 Log的使用方法: 一…

TP框架如何开启log日志

1.日志的处理工作是由系统自动进行的&#xff0c;在开启日志记录的情况下&#xff0c;会记录下允许的日志级别的所有日志信息。 其中&#xff0c;为了性能考虑&#xff0c;SQL日志级别必须在调试模式开启下有效&#xff0c;否则就不会记录。 系统的日志记录由核心的Think\Log类…

tplink路由器设置网址方法

tplink路由器设置网址的方法很多的用户都不知道&#xff0c;其实这个路由器可以通过两种方式来进行设置&#xff0c;十分的方便&#xff0c;如果你还没有完成设置不妨来试一试。 tplink路由器设置网址&#xff1a; 电脑&#xff1a; 1、首先打开浏览器&#xff0c;输入“192…

tp5日志

日志记录和跟踪调试。由于日志记录了所有的运行错误&#xff0c;因此养成经常查看日志文件的习惯&#xff0c;可以避免和及早发现很多的错误隐患。日志还有其他作用&#xff0c;用于输出一些不方便显示的调试的信息。 可以给多应用&#xff0c;或者前后端&#xff0c;分别配置…

TP Link 路由器 设置

入手某型号的TP LINK 路由器一台。希望做些定制化的设置。记录一下。 1&#xff0c;光猫拨号改为路由器拨号 光猫的型号是吉比特某款&#xff0c;其地址是192.168.1.1&#xff0c;此光猫没有无线。所接的路由器地址是192.168.2.1。 1&#xff0c;先将光猫的设置全部备份。2种…

TP5.1使用日志

日志我们在线上项目调试bug的利器&#xff0c;所以我们需要掌握 日志要记录的是错误信息&#xff0c;所以只需要将测试错误改为你需要获取的错误信息即可 1.引入think\Log这个类 2.打开log文件

TPLinker

# 笔记 1、长文本划分为短文本的时候&#xff0c;是以模型底层分词的个数来判断的 2、输入的X必须转换成id&#xff0c;输入的Y也必须转换成id&#xff0c;这样X输入得到的结果P才能和Y做比对&#xff0c;所有的模型都是围绕这个根基做转换&#xff0c;确认好X和Y&#xff0c;把…

渗透工具TPLogScan:ThinkPHP3和5日志扫描工具,提供命令行版和BurpSuite插件版,尽可能发掘网站日志信息

Git地址&#xff1a; r3change/TPLogScan: ThinkPHP全日志扫描工具&#xff0c;命令行版和BurpSuite插件版 (github.com) ThinkPHP3和5日志扫描工具&#xff0c;提供命令行版和BurpSuite插件版&#xff0c;尽可能发掘网站日志信息 命令行版 安装 git clone https://github.c…

Cadence virtuos617安装教程

Cadence virtuos安装教程 所有安装文件可在如下地址下载 链接:https://pan.baidu.com/s/1lZdRtzO1vTMHp7fmLHWGjQ?pwd=svwi 提取码:svwi下载的文件放到共享目录下。关于共享目录的设置可查看百度;并命名为Linux_space,文件名更改为Cadence.如下图 连接网络 安装虚拟机工…

Cadence 16.6安装配置教程

这里使用的是吴川斌的阿狸狗安装&#xff0c;傻瓜式安装&#xff0c;非常方便快捷 Cadence SPB 16.6安装包下载 阿狸狗下载 视频教程 双击打开阿狸狗 开始安装 其他安装