python abseil库(app, flags, logging)总结
absl (Abseil PythonCommon Libraries)(https://abseil.io/docs/python/)是用于构建Python应用程序的Python库代码集合,它包括三个子库:app, flags, logging。
app
- app是Abseil Python应用程序的通用入口点。
flags
- absl.flags定义了分布式的命令行系统。flags类型包括boolean, float, integer, list, string等,通过DEFINE_*函数来定义,其中的*表示flags类型。所有的flags都包括一个变量名称,默认值,help-string和可选的单字母名称。一些flags还包括其他参数。
- DEFINE_*函数主要做了两件事情。第一,创建Flag对象;第二,将Flag对象注册到FlagValues对象中。FlagValues对象可浏览命令行参数并传递flag参数到相应的Flag对象中进行值检查和类型转换,转换后的flag值可作为FlagValues对象的属性使用。
- 通过FlagValues对象可进入一个flag,如flags.FLAGS.myflag。
- __main__模块将命令行参数传递给flags.FLAGS进行解析。
<代码示例>
编写代码test.py
from absl import app
from absl import flags
FLAGS = flags.FLAGS #解析命令行参数,可帮助在不修改源码的情况下选择特定参数来运行程序
#接受任何输入并将其解释为字符串
flags.DEFINE_string('name', 'Jane Random', 'Your name.')
#将输入解释为整数型,可选的参数lower_bound和upper_bound用于规定最小值和最大值;如果命令行中的数值超过此范围,则产生FlagError
flags.DEFINE_integer('age', None, 'Your age in years.', lower_bound=0)
#将输入解释为浮点型,其他同EFINE_integer
flags.DEFINE_float("weight", None, "Your weight in kg.", lower_bound=0)
#通常不需要设置参数。True/Flase
flags.DEFINE_boolean('debug', False, 'Produces debugging output.')
#获取字符串列表,如果命令行中的值不在此列表中则报错。否则,会将此值赋值给FLAGS.flag
flags.DEFINE_enum('job', 'running', ['running', 'stopped'], 'Job status.') #DEFINE_enum()函数()中各元素分别代表name,default,enum_values,help
#接受命令行上以逗号分隔的字符串列表,并将它们存储在Python列表对象中
flags.DEFINE_list("food", None, "Your favorite food")
def main(argv):
if FLAGS.debug:
print('non-flag arguments:', argv)
print('Hi', FLAGS.name)
if FLAGS.age is not None:
print('You are %d years old, and your job is %s' % (FLAGS.age, FLAGS.job))
if FLAGS.weight is not None:
print('Your weight is %d kg' % FLAGS.weight)
if FLAGS.food is not None:
print("Your favorite food(s): %s" % FLAGS.food)
if __name__ == '__main__':
app.run(main)
执行test.py输出结果
~/tmp$ python test.py --name yaya --age=18 --weight=45 --debug=True --food apple,orange --job stopped
non-flag arguments: ['test.py']
Hi yaya
You are 18 years old, and your job is stopped
Your weight is 45 kg
Your favorite food(s): ['apple', 'orange']
python abseil库(app, flags, logging)总结的更多相关文章
- python的日志模块:logging;django的日志系统;django日志输出时间修改
Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...
- Python日志库logging总结-可能是目前为止将logging库总结的最好的一篇文章
在部署项目时,不可能直接将所有的信息都输出到控制台中,我们可以将这些信息记录到日志文件中,这样不仅方便我们查看程序运行时的情况,也可以在项目出现故障时根据运行时产生的日志快速定位问题出现的位置. 1. ...
- Python日志库logging总结
转自 https://cloud.tencent.com/developer/article/1354396 在部署项目时,不可能直接将所有的信息都输出到控制台中,我们可以将这些信息记录到日志文件中 ...
- python常用库
本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...
- Python常用库大全
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...
- python的库小全
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...
- TensorFlow学习笔记之--[tf.app.flags使用方法]
很多时候在运行python代码的时候我们需要从外部定义参数,从而避免每次都需要改动代码.所以一般我们都会使用 argparse 这个库.其实TensorFlow也提供了这个功能,那就是 tf.app. ...
- TensorFlow tf.app&tf.app.flags用法介绍
TensorFlow tf.app&tf.app.flags用法介绍 TensorFlow tf.app argparse tf.app.flags 下面介绍 tf.app.flags.FL ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- python 三方库
---------------- 这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理. ...
随机推荐
- 装机DEBUG大全
显示器 分屏没声音?去声音设置 (前提是HDMI连接 分屏能够传输音频 再去调整应用的音频
- SQL优化:distribute by 小数据场景处理数据倾斜
distribute by rand() distribute by :用来控制map输出结果的分发,即map端如何拆分数据给reduce端. 会根据distribute by 后边定义的列,根据re ...
- 访问提示'staticfiles' is not a registered tag library. Must be one of: admin_list admin_modify admin_urls cache i18n l10n log static tz
解决方法 前端模板中{% load staticfiles %}都修改为{% load static %} 因为在django3.x中这部分做了修改,前者无法识别,只能用后者
- react+antd upload实现图片宽高、视频宽高尺寸校验
图片宽高校验方法: // 上传图片尺寸限制 const checkIconWH = (file: any) => { return new Promise<void>(functio ...
- Windows系统Redis集群搭建
一.参考网址 https://mp.weixin.qq.com/s/ImdEJTdAmCFJsT55rici0Q 二.Redis版本 注意:搭建windows版的redis集群,redis的版本需要5 ...
- fpga 通过vga模块使电脑显示图片
对vga模块搞了好几天,vga接口时序不难,就是行计数,列计数,对应到每一个像素上去.这里我先把vga控制模块的程序付上.采用的是小梅哥的程序.屏幕是800X600,配置的时钟是40M.注意改变屏幕尺 ...
- idea中 .gitignore文件的使用
idea中 .gitignore文件的使用 首先保证当前的所有文件都没有被git追踪 如果被追踪,建议先取消git的版本控制 输入如下指令 find . -name ".git" ...
- CSS 常用样式-盒模型属性
盒模型又叫框模型,包含了五个用来描述盒子位置.尺寸的属性,分别是宽度 width.高度 height.内边距 padding. 边框 border.外边距 margin. 常见盒模型区域: • 盒模型 ...
- MTS和MTO的差别
一.概念篇 MTS(Make-to-Stock): 按库存生产 可以独立创建计划.生产订单,可以如非限制使用的库存,并且发货等不受限制. 生产的成品或者半成品在系统中建有BOM,开工单生产后记入库存, ...
- can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
predict=predict.data.numpy() 这一行报错意思是:如果想把CUDA tensor格式的数据改成numpy时,需要先将其转换成cpu float-tensor随后再转到nump ...