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.0002

原文地址:https://www.cnblogs.com/wanghui-garcia/p/11267160.html

时间: 2024-09-30 05:18:59

python的argparse模块parse_known_args()方法的使用的相关文章

【转】关于python中re模块split方法的使用

注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于python中re模块split方法的使用 已有 3094 次阅读 2014-3-12 11:30 |系统分类:科研笔记 今天在写一段小代码的时候需要用到re.split()方法,在使用的过程中发现了一个以前不知道的新用法,发现这个用法还是挺实用的,就把它记录下来: >>> m = re.s

Python的Argparse模块是什么?(未完)

        近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档的Argparse模块的教程. 注意:还有两个模块与Argparse功能相似,getopt和optparse. argparse基于optparse,因此在使用方面非常相似,但是不推荐使用optparse,官方文档更推荐argparse. 1.Argparse的作用 举一个小例子,在Linux系统中

python安装第三方模块的方法

在python开发中,如何安装python模块呢?肯定很多初学者都在想为何要安装模块呢?因为这些模块中不包含在python的默认代码中,需要从外部下载并安装.比如pygame的Windows版本,直接双击安装就可以.但大多数模块没有提供这样的安装方式,有些同学没能成功安装而导致无法在程序中引入模块.在这里,介绍一下python模块几种常见的安装方法. 1.直接copy下载的模块文件中已经有了模块的文件,有些模块只有一个文件,比如较早版本的BeautifulSoup,有些是一个文件夹,比如新版本B

Python的argparse 模块处理参数

import argparse USAGE = """ %prog -q phylogroup -o out_file, you shall provide the phyloname of query """ parser = argparse.ArgumentParser(description = USAGE) parser.add_argument('-o', "--output", default = "t

python中argparse模块的使用

有两个文件一个是 文件1:sync_shop_source_bimer.sh 文件2:sync_shop_source_bimer.py 在sync_shop_source_bimer.sh 中调用sync_shop_source_bimer.py 文件1中产生的文件要传递给文件2 文件1中的内容 shop_flow_output="/tmp/shop_flow_source" shop_gmv_output="/tmp/shop_gmv_source" yesda

python中os模块的方法总结

#返回当前的工作目录os.getcwd #print(os.getcwd()) #改变一个目录 chdir(path) #列出所有的文件或者目录 listdir(path) #print(os.listdir('/etc')) #创建目录  mkdir(path) #创建多层目录 makedirs(path) #删除一个文件remove(path) #删除单层目录 rmdir(path) #删除多层目录 removedirs(path) #重新命名 rename(old,new) #system

学习python argparse模块下载安装和使用

Python中argparse模块已经替代以前的optparse模块,常被用来实现命令行参数和选项的解析作用. 位置参数: 从一个最基本的程序开始(它并没有实现什么现实的功能): import argparseparser = argparse.ArgumentParser()parser.parse_args() 下面是运行之后的结果: $ python prog.py$ python prog.py --helpusage: prog.py [-h]optional arguments: 

python导入模块的方法

python有三种导入模块的方法 1 import modname : 模块是指一个可以交互使用,或者从另一Python 程序访问的代码段.只要导入了一个模块,就可以引用它的任何公共的函数.类或属性.模块可以通过这种方法来使用其它模块的功能. 2 导入模块的某个函数 from modname import funcname from modname import fa, fb, fc 3 给模块取个别名(因为原来的模块名字可能比较长) import module as newname

python argparse模块

python argparse 模块的功能是对命令行进行解析,检查命令行是否符合预定义的格式. 使用方法: 1.导入argparse模块   import argparse 2.创建argparse对象   parser = argparse.ArgumentParser() 3.添加命令行相关参数.选项  parser.add_argument("...") 4.解析    parser.parse_args() 例一:(删除指定的zabbix screen) #!/usr/bin/