DTA随笔2

2023-12-02 22:48
文章标签 随笔 dta

本文主要是介绍DTA随笔2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

arguments.py的argparser函数

  1. import argparse

(1)定义:argparse是python标准库里面用来处理命令行参数的库。

(2)命令行参数分为位置参数选项参数
位置参数就是程序根据该参数出现的位置来确定的。
如:[root@openstack_1 /]# ls root/ # 其中root/是位置参数
选项参数是应用程序已经提前定义好的参数,不是随意指定的
如:[root@openstack_1 /]# ls -l # -l 就是ls命令里的一个选项参数

(3)使用步骤
A. import argparse 首先导入模块
B. parser = argparse.ArgumentParser() 创建一个解析对象
C. parser.add_argument() 向该对象中添加你要关注的命令行参数和选项
D. parser.parse_args() 进行解析

(4)argparse.ArgumentParser()方法参数:(一般我们只选择用description)

prog=None        - 程序名
description=None,- help时显示的开始文字
epilog=None,     - help时显示的结尾文字
parents=[],      - 若与其他参数的一些内容一样,可以继承
formatter_class=argparse.HelpFormatter,- 自定义帮助信息的格式
prefix_chars='-',          - 命令的前缀,默认是‘-’
fromfile_prefix_chars=None,- 命令行参数从文件中读取
argument_default=None,     - 设置一个全局的选项缺省值,一般每个选项单独设置
conflict_handler='error',  - 定义两个add_argument中添加的选项名字发生冲突时怎么处理,默认处理是抛出异常
add_help=True    		   - 是否增加-h/--help选项,默认是True)

(5)add_argument()方法参数:

name or flags...    - 必选,指定参数的形式,一般写两个,一个短参数,一个长参数
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('echo')  # 指定程序可以接受的命令行选项
args = parser.parse_args()  # parse_args()从指定的选项中返回一些数据
print(args)
print(args.echo)

结果:
G:\flower\python\arg_parse>python demo1.py foo
Namespace(echo=‘foo’)
foo

action	- 表示值赋予键的方式,这里用到的是bool类型,action意思是当读取的参数中出现指定参数的时候的行为
help	- 可以写帮助信息 
parser = argparse.ArgumentParser(description = 'this is a description')
parser.add_argument('--ver', '-v', action = 'store_true', help = 'hahaha')
# 将变量以标签-值的字典形式存入args字典
args = parser.parse_args()
if args.ver:print("Ture")
else:print("False")

结果:
G:\flower\python\arg_parse>python demo1.py -v
Ture
G:\flower\python\arg_parse>python demo1.py -j
usage: demo1.py [-h] [–ver]
demo1.py: error: unrecognized arguments: -j

required    - 必需参数,通常-f这样的选项是可选的,但是如果required=True那么就是必须的了
type   		- 指定参数类型
# required标签就是说--ver参数是必需的,并且类型为int,输入其它类型会报错
parser.add_argument('--ver', '-v', required = True, type = int)

结果:
G:\flower\python\arg_parse>python demo1.py -v 1
Ture
G:\flower\python\arg_parse>python demo1.py -v ss
usage: demo1.py [-h] --ver VER
demo1.py: error: argument --ver/-v: invalid int value: ‘ss’

choices    - 设置参数的范围,如果choice中的类型不是字符串,要指定type表示该参数能接受的值只能来自某几个值候选值中,除此之外会报错,用choice参数即可
parser.add_argument('file', choices = ['test1', 'test2'])
args = parser.parse_args()
print('read in %s'%(args.file))

结果:
G:\flower\python\arg_parse>python demo1.py test1
read in test1

nargs    - 指定这个参数后面的value有多少个,默认为1
# 表示脚本可以读入两个整数赋予num键(此时的值为2个整数的数组)
parser.add_argument('filename', nargs = 2, type = int)
args = parser.parse_args()
print('read in %s'%(args.filename))

结果:
G:\flower\python\arg_parse>python demo1.py 1 2 3
usage: demo1.py [-h] filename filename
demo1.py: error: unrecognized arguments: 3

分析
nargs还可以’*'用来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值;‘+’表示读取至少1个该位置参数’?'表示该位置参数要么没有,要么就只要一个。(PS:跟正则表达式的符号用途一致。)
如:

parser.add_argument('filename', nargs = '+', type = int)
args = parser.parse_args()
print('read in %s'%(args.filename))
dest   - 设置这个选项的value解析出来后放到哪个属性中
parser.add_argument('-file', choices = ['test1', 'test2'], dest = 'world')
args = parser.parse_args()
print('read in %s'%(args.world))

结果:
G:\flower\python\arg_parse>python demo1.py -file test1
read in test1


  1. 对上面函数的举例理解;
import argparse
import sysparse=argparse.ArgumentParser()  # 创建对象
parse.add_argument("--learning_rate",  # 选项type=float,  # 数据类型default=0.01,  # 默认值help="initial learining rate"  # help命令时的说明
)
parse.add_argument("--max_steps",type=int,default=2000,help="max"
)
parse.add_argument("--hidden1",type=int,default=100,help="hidden1"
)
flags,unparsed=parse.parse_known_args(sys.argv[1:])  # sys.argv[1:]是命令行语句中从第一个到最后
print(flags.learning_rate)
print(flags.max_steps)
print(flags.hidden1)
print(flags)
print(unparsed)

输出:
0.01
2000
100
Namespace(hidden1=100, learning_rate=0.01, max_steps=2000)
[]

接下来模拟一下windows的cmd指令行:

C:\Users\lenovo\Desktop>python test.py --learning_rate 20 --max_steps 10

输出:
20.0
10
100
[]

C:\Users\lenovo\Desktop>python test.py --learning_rate 20 --unknown 10

输出:
20.0
2000
100
Namespace(hidden1=100, learning_rate=20.0, max_steps=2000)
[’–unknown’, ‘10’]

这篇关于DTA随笔2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447125

相关文章

【 Android 应用开发随笔】-- PackageInstaller.SessionCallback

PackageInstaller.SessionCallback 是 Android 开发中的一个接口,用于在应用程序安装过程中接收安装状态的回调。这个接口属于 android.content.pm.PackageInstaller 类,主要用于处理通过 PackageInstaller 类进行的包安装。 主要功能 ◾ 安装进度通知: PackageInstaller.SessionCal

程序员的自我修养--术语随笔

PLT PLT(Procedure Linkage Table)是用于动态链接共享库中函数调用的一种数据结构,它在程序运行时起着至关重要的作用。下面是对 PLT 的详细解释:作用: PLT 主要用于实现库函数的延迟绑定(dynamic binding)。它负责将程序中对共享库中函数的调用映射到最终的共享库函数的地址上,并且支持共享库的重定位。 实现原理: 当一个程序调用共享库中的函数时,对应的

强化学习实操入门随笔

碎碎念:经过思考,打通底层逻辑,我认为未来ai的功能是在沟通领域代替人,未来人-人模式(媒介是死的语言,比如看古人留下的文字、聊天的暂时不在)会变成人-ai替身-人模式(符合本人想法的“预测个性化语言”)。由于沟通越来越虚拟化和低成本,以及各种模态(比如视频链接)的数字媒介比见面聊天效率更高,所以制作人的各种在虚拟数字空间的“替身”(模仿聊天、总结信息等秘书类事务)是很可能出现的重点问题。

周末随笔 | 笔耕者的悲哀 —— 盗亦无道

欢迎跳转到本文的原文链接:https://honeypps.com/talk/the-thief-has-no-way/ 今天所要说的不是技术,而是盗版这个现象。对于技术公众号来说,很少会写一些技术之外的东西。而且写一些实事类的东西对触碰到一部分人的利益,更有甚者会被“安排”。 对于盗版,我其实已经习惯了,也早已习惯地采取“鸵鸟策略”来应对。不过昨天发生的一件事情确实有点让人寒心。 前天我的

第三章 操作符读书随笔

1、 赋值运算符“=”:     对于基本类型来说,是把基本类型的实际内容赋给了左边的变量。     对于对象类型来说,是把对象的引用赋给了左边的变量。不同的变量可以引用同一个对象的引用,从而指向同一个对象。 2、整数除法“/”     进行除法的时候,只获取整数部分,不会四舍五入。 3、逻辑比较运算符“==”     逻辑等于运算符,比较的是对象的引用,一般情况下会根据equals方

随笔十、音频扩展模块测试

本项测试简单,对购买的音频扩展模块进行录音放音测试 按照使用说明,连接音频小板,一个喇叭一个麦克风,4根线,buildroot系统镜像 录音测试 root@RK356X:/# arecord -c 1 -r 44100 -f S16_LE /tmp/record.wav Recording WAVE '/tmp/record.wav' : Signed 16 bit Little En

随笔1:数学建模与数值计算

目录 1.1 矩阵运算 1.2 基本数学函数 1.3 数值求解 数学建模与数值计算 是将实际问题通过数学公式和模型进行描述,并通过计算获得模型解的过程。这是数学建模中最基本也是最重要的环节之一。下面是详细的知识点讲解及相应的MATLAB代码示例。 1.1 矩阵运算 知识点讲解: 在数学建模中,矩阵运算是非常基础且重要的工具。许多实际问题可以通过矩阵来表示,例如线性方程

2024年8月总结及随笔之逝

1. 回头看 日更坚持了609天。 读《零信任网络:在不可信网络中构建安全系统》更新完成读《软件开发安全之道:概率、设计与实施》开更并持续更新 2023年至2024年8月底累计码字1463007字,累计日均码字2402字。 2024年8月码字109278字,同比增长177.6%,环比增长27.3%,日均码字数3525字,累计码字745044字,累积日均码字3053字。 读完以下这些书

随笔九、SARADC按键程控测试

目录 1. 泰山派环境 2. 按键3分析 3. 编程测试 1. 泰山派环境 泰山派开发板上有3个按键 按键1是电源按键PWRON,实测按几下会导致开发板重启 按键2是复位按键RESET,按下立马复位重启 按键3是升级按键RECOVER,配合RESET按键可以使开发板进入Loader 烧写模式 一般来说开发板都会给用户提供一个用户按键,看样子泰山派用户按键是需要自己用G

随笔八、LED-RGB灯程控测试

目录 1. 泰山派环境 2. 编程控制 1. 泰山派环境 泰山派开发板上有一颗RGB三色LED灯,烧写官方镜像上电后开始闪烁,表示系统已经正常运行。可以在设备树里修改初始状态。 查看电路图知道,RGB是通过GPIO1的B0~B2引脚控制的,低电平点亮。 SDK包含了leds的驱动 root@RK356X:/# ls /sys/class/leds/ mmc0::  rg