python的argparse模块parse_known_args()方法的使用
parse_known_args()方法的用处就是有些时候,你的选项配置可能不会在一个函数或包中调用完成
在很多使用,我们可能会需要根据一些输入的选项,比如在深度学习中,我们可能会根据传入的模型设置--model来决定我们调用的是那个模型代码,然后在该模型中还会有一部分的选项设置
那么这时候就会出现一种情况就是运行命令中会传入所有需要设置的选项值,但是有时候仅获取到基本设置时可能要进行一些操作然后才继续导入剩下的参数设置
parse_known_args()方法的作用就是当仅获取到基本设置时,如果运行命令中传入了之后才会获取到的其他配置,不会报错;而是将多出来的部分保存起来,留到后面使用
举例说明:
import argparse
def basic_options():
parser = argparse.ArgumentParser()
parser.add_argument('--data_mode', type=str, default= 'unaligned', help='chooses how datasets are loaded')
parser.add_argument('--mode', type=str, default='test', help='test mode')
return parser def data_options(parser):
parser.add_argument('--lr', type=str, default='0.0001', help='learning rate')
return parser if __name__ == '__main__':
parser = basic_options()
opt, unparsed = parser.parse_known_args()
print(opt)
print(unparsed)
parser = data_options(parser)
opt = parser.parse_args()
print(opt)
运行:
(deeplearning) userdeMacBook-Pro:pytorch-CycleGAN user$ python test_data.py --data_mode aligned --lr 0.0002
Namespace(data_mode='aligned', mode='test')
['--lr', '0.0002']
Namespace(data_mode='aligned', lr='0.0002', mode='test')
该例子说明了在一开始仅导入了basic_options()选项时,多余出来的--lr选项会被保存起来,不会报错,直到接下来导入了data_options(parser)之后再将其赋值
这时候如果我们传入一个没有配置的选项,它在中间的时候也会保存起来,但是最后就会报错:
(deeplearning) userdeMacBook-Pro:pytorch-CycleGAN user$ python test_data.py --data_mode aligned --lr 0.0002 --no_clue True
Namespace(data_mode='aligned', mode='test')
['--lr', '0.0002', '--no_clue', 'True']
usage: test_data.py [-h] [--data_mode DATA_MODE] [--mode MODE] [--lr LR]
test_data.py: error: unrecognized arguments: --no_clue True
其他:如果想要以字符串形式获取选项值,在最后添加一行:
print('{data_mode}_{mode}_{lr}'.format(**vars(opt)))
返回:
(deeplearning) userdeMacBook-Pro:pytorch-CycleGAN user$ python test_data.py --data_mode aligned --lr 0.0002
Namespace(data_mode='aligned', mode='test')
['--lr', '0.0002']
Namespace(data_mode='aligned', lr='0.0002', mode='test')
aligned_test_0.
python的argparse模块parse_known_args()方法的使用的更多相关文章
- Python的argparse模块的使用
Python的argparse模块的使用 最近看到一份Pytorch代码有以下内容: # Training settings parser = argparse.ArgumentParser(desc ...
- python中argparse模块简单使用
python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...
- 【转】关于python中re模块split方法的使用
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...
- python有三种导入模块的方法(转)
原文:http://www.cnblogs.com/allenblogs/archive/2011/11/15/2055149.html python有三种导入模块的方法 其一, import mod ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- 【python】argparse模块
来源:http://www.2cto.com/kf/201412/363654.html argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.ar ...
- Python的Argparse模块是什么?(未完)
近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档 ...
- python的argparse模块
一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数,例如python parseTes ...
- Python的Argparse模块是什么?
近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档 ...
随机推荐
- java基础(7)---IO流
一.FileWriter 导包:import java.io.FileWriter 覆盖写入: 追加写入: 写数据换行: write方法重载: 二.编码: 三.FileReader: read重载 ...
- Java并发(九)【转载】不可不说的Java“锁”事
转载自 美团技术团队,原文链接 不可不说的Java“锁”事 前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK ...
- 《hello-world》第九次团队作业:【Beta】Scrum meeting 3
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目验收 团队名称 <hello--wor ...
- CTSC2010 珠宝商
珠宝商 题目描述 Louis.PS 是一名精明的珠宝商,他出售的项链构造独特,很大程度上是因为他的制作方法与众不同.每次 Louis.PS 到达某个国家后,他会选择一条路径去遍历该国的城市.在到达一个 ...
- 解决SQL Error: 0, SQLState: S1009,Invalid value for getLong() - 'XX'的问题
内容简介 今天遇到一个异常,报出消息为SQL Error: 0, SQLState: S1009,Invalid value for getLong() - 'PH',排查问题后,结果令人哑然失笑,也 ...
- mage Ansible学习3 ansible role实例
一.ansible配置文件解析 1./etc/ansible/ansible.cfg配置文件详解 [root@node3 ~]# cat /etc/ansible/ansible.cfg |grep ...
- 三.cron计划任务
• 用途:按照设置的时间间隔为用户反复执行某一项固 定的系统任务 • 软件包:cronie.crontabs • 系统服务:crond • 日志文件:/var/log/crond • 使用 cro ...
- web表单
1.配置 使用Flask-WTF, 它集成了WTForms并且完美地集成到了flask. 在microblog根目录下创建一个文件,存储flask扩展的所有配置,CSRF_ENABLED用于激活跨站点 ...
- 共享库的使用(.so)文件
1.共享库的概念 2.创建共享库命令 gcc -shared -fpci -o lib/libmath.so obj/mymath.o 具体加不加 fpci 这个要看平台支持吧支持:具体详情可以查阅 ...
- 洛谷 P1190 接水问题 题解
P1190 接水问题 题目描述 学校里有一个水房,水房里一共装有 \(m\) 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1. 现在有 \(n\) 名同学准备接水,他们的初始接水顺序已经确 ...