python argparse变量到class变量的转换代码
github上的项目总喜欢使用argparse + bash来运行,这对于快速运行一个项目来说可能有好处,但在debug的时候是很难受的。因为我们需要在.sh文件中修改传入参数,并且不能使用jupyter。
以下是把parser转换成显式class命名空间的一个代码示例:
#%%
import argparse parser = argparse.ArgumentParser() parser.add_argument("--get_pred",
action='store_true',
help="Whether to get prediction results.")
parser.add_argument("--get_ig_pred",
action='store_true',
help="Whether to get integrated gradient at the predicted label.")
parser.add_argument("--get_ig_gold",
action='store_true',
help="Whether to get integrated gradient at the gold label.")
parser.add_argument("--get_base",
action='store_true',
help="Whether to get base values. ")
parser.add_argument("--batch_size",
default=16,
type=int,
help="Total batch size for cut.")
parser.add_argument("--num_batch",
default=10,
type=int,
help="Num batch of an example.") #%% 转换
def print_store_actions(store_actions, print_attrs = ['type', 'help'], need_default = True):
if len(print_attrs) > 0:
s = '# '
for i in store_actions.__dir__():
if i in print_attrs:
s0 = str(getattr(store_actions, i))
s0 = s0.replace('\n', ' ')
s += s0 + ', '
print(s[:-2])
if need_default:
if getattr(store_actions, 'type') == str:
s = '# default = "' + str(getattr(store_actions, 'default')) + '"'
else:
s = '# default = ' + str(getattr(store_actions, 'default'))
print(s) def parser_2_class(parser, print_attrs = ['type', 'help'], need_default = True):
for i in parser._actions:
if i.option_strings[0] == '-h':
continue
v = '"' + i.default + '"' if i.type == str else i.default
if len(print_attrs) == 0:
print(i.option_strings[0][2:], '=', v, end=' ')
print_store_actions(i, print_attrs, need_default)
else:
print_store_actions(i, print_attrs, need_default)
print(i.option_strings[0][2:], '=', v) parser_2_class(parser, ['type', 'help'], True)
然后使用输出构建一个只包含成员变量的类,就能实现和parser获得的变量空间一样的效果,从而可以方便地debug,并且无需修改项目的其它代码。如下:
class args:
# None, Whether to get prediction results.
# default = False
get_pred = False
# None, Whether to get integrated gradient at the predicted label.
# default = False
get_ig_pred = False
# None, Whether to get integrated gradient at the gold label.
# default = False
get_ig_gold = False
# None, Whether to get base values.
# default = False
get_base = False
# <class 'int'>, Total batch size for cut.
# default = 16
batch_size = 16
# <class 'int'>, Num batch of an example.
# default = 10
num_batch = 10
python argparse变量到class变量的转换代码的更多相关文章
- python的学习笔记01_2变量 常量 注释 用户交互 格式化输出
变量是什么? 变量的作用 Variables are used to store information to be referenced and manipulated in a computer ...
- python下划线,私有变量
转自:http://blog.sina.com.cn/s/blog_58649eb30100g4zo.html Python用下划线作为变量前缀和后缀指定特殊变量. "单下划线" ...
- day02编程语言,Python语言介绍,Python解释器安装,环境变量,Python代码执行,pip,应用程序使用文件的三步骤,变量,变量的三大组成,比较,pycharm
复习 重点: 1.进制转换:二进制 与十六进制 2.内存分布:栈区 与堆区 # 二进制1111转换十六进制 => 8 4 2 1 => f 10101100111011 => 2a7 ...
- Python 3 学习笔记之——变量作用域、模块和包
1. 变量作用域 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python 的作用域一共 ...
- 第三篇:python基础之数据类型与变量
阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...
- Python中的数据类型、变量、字符编码、输入输出、注释
数据类型 number(数字) 用于存储类型,通常分为int.long.float.complex: int:32位机器上占32位,取值范围为-231 ~ 231 - 1:64位机器上占64位,取值范 ...
- 第二篇.1、python基础之数据类型与变量
一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...
- 编程语言类别;运行Python程序的方式;变量和常量;Python程序的垃圾回收机制;
目录 编程语言分类 运行Python程序的两种方式 1.交互式 变量与常量 1.变量 2.常量 3.小整数池 垃圾回收机制 编程语言分类 编程语言分为: 1.机器语言:直接用二进制的0和1和计算机(C ...
- python的__file__和__name__变量
#现在的目录结构为 #现在想要在web2/bin.py中调用web3/main.py模块中的方法 from web3 import main main.foo() #在pycharm中执行 ##### ...
- Python 变量类型及变量赋值
在 Python 中,变量不一定占用内存变量.变量就像是对某一处内存的引用,可以通过变量访问到其所指向的内存中的值,并且可以让变量指向其他的内存.在 Python 中,变量不需要声明,但是使用变量之前 ...
随机推荐
- Kubernetes-7:Pod健康检查原理-探针(就绪检测、存活检测)
探针-就绪探测.存活探测 探针是由kubelet对容器执行的定期诊断,要执行诊断,kubelet调用由容器实现的Handler,有三种类型的处理程序: ExecActive:在容器内执行指定命令,若命 ...
- ubuntu安装过程(双系统模式)中遇到的坑
笔者在安装上win11后,看我的M.2硬盘太大,就想着以双系统方式再安装上个ubuntu,以方便以后使用.没想到和win11一样,也是连遇到挫折,一番折腾后最终才成功.下面记录下安装要点. 安装win ...
- c++学习笔记(五):文件操作
目录 文件操作 文本文件 写文件 include 读文件 include 二进制文件 写文件 读文件 文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将数据持久化 ...
- 【ETL工具】DataX + DataXWeb 初使用过程记录
版本:DataX v202309 DataXWeb 2.1.3预发布版 DataX: Github:https://github.com/alibaba/DataX 功能介绍文档:https://g ...
- OpenCV开发笔记(八十):基于特征点匹配实现全景图片拼接
前言 一个摄像头视野不大的时候,我们希望进行两个视野合并,这样让正视的视野增大,从而可以看到更广阔的标准视野.拼接的方法分为两条路,第一条路是Sticher类,第二条思路是特征点匹配. 本篇使用 ...
- 开源问卷调查和考试系统 SurveyKing 安装和使用教程
最近公司又要搞什么满意度调查了,我这个小菜鸟又要头疼了.上次用那个破系统,界面丑不说,功能还少得可怜,搞得我加班到半夜.这回非得找个好用的不可. 正发愁呢,突然想起来前两天同事小王推荐了一个叫 &qu ...
- 深入浅出Stream流
Java 8的新特性之一就是流stream,配合同版本出现的 Lambda ,使得操作集合(Collection)提供了极大的便利. 案例引入 在JAVA中,涉及到对数组.Collection等集合类 ...
- 在.net core使用Serilog,只要简单的三步
第一步:在项目上用nuget安装 Serilog.AspNetCore 最新的稳定版即可 ,安装这个会把其他需要的包都给包含着 第二步:修改 Program.cs 的 CreateHostBuilde ...
- Spark - Pandas UDF
spark 本身对 dataframe 的操作支持没有像pandas 那样强大,所有我们可以把spark dataframe 转化成 pandas dataframe 来利用pandas datafr ...
- SpringBoot定时任务实现数据同步
业务的需求是,通过中台调用api接口获得,设备数据,要求现实设备数据的同步. 方案一:通过轮询接口的方式执行 pullData() 方法实现数据同步 该方式的原理是先清空之前的所有数据,然后重新插入通 ...