IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 命令行参数传递库argparse的使用 -> 正文阅读

[游戏开发]命令行参数传递库argparse的使用

作者:18cyl

时间:2022.4.20

参考文章:python argparse:命令行参数详解

本文主要是对上述文章的一些补充

一、常用参数组合

parser = argparse.ArgumentParser(description="Something about the program") # 基本上只用description 这个字段足够了 或者什么都不用
# 基本上我只用长选项可选参数
parser.add_argument('--weights', type=str, default='123456', help='initial weights') #带default的字符串参数  
parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')# flag value格式则为value,无flag则为空串。不允许 单独出现flag
parser.add_argument('--bucket', nargs='?',const="",default='', help='gsutil bucket')#接受到 flag 或者无flag都为空字符串,flag value格式则为value
parser.add_argument('--epochs', type=int, default=300,help='initial epochs')#带default的int型参数

parser.add_argument('--rect', action='store_true', help='rectangular training') #接受即为true,未接收默认未False,不允许出现 flag value这种赋值格式
parser.add_argument('--rect', action='store_false', help='rectangular training') #接受即为false,未接收默认未true,不允许出现 flag value这种赋值格式
parser.add_argument('--resume', action="store_const",const=5, default=False, help='resume most recent training')# 接受到--resume则为5(const),未接收到则为False(default) 不允许出现 flag value的格式 store_true、store_false是store_const的特殊形式

# nargs ‘?’表示最多一个,‘+’表示至少一个,‘*’可有任意个,数字表示必须指定数目个
# 命令行穿多参数时格式为  flag value1 value2 value3。如果未指定type为int等则默认为str,
# nargs为?*或者大于1的数字则接受到的结果都为list。即使只接受了一个数字
parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')#带default的多数int型 
parser.add_argument('--resume', nargs='?', const=1, default=False, help='resume most recent training') #接收到--resume 如果后面没有带value则存为1,如果接收到--resume value1格式则存为value1 如果没收到--resume 则为False

opt = parser.parse_args() # 3、利用解析器对象内建方法,开始解析参数,获取解析结果对象  Namespace(about='input')

print(opt) 
print(opt.about) # 4、opt为解析结果对象 通过 实例变量 获取命令行传入的参数

二、使用框架

一共四步:

import argparse

parser = argparse.ArgumentParser() #1、初始化 ArgumentParser()对象 即:获解析器对象
parser.add_argument("-a","--about",type=str,help="this is a para named about") #2、利用解析器对象内建方法,添加参数解析规则 具体规则继续看下面文章
opt = parser.parse_args() # 3、利用解析器对象内建方法,开始解析参数,获取解析结果对象  Namespace(about='input')

print(opt) 
print(opt.about) # 4、opt为解析结果对象 通过 实例变量 获取命令行传入的参数 

在这里插入图片描述
看到这里有些疑问:输入的是-a参数 但是结果却只有about的值?参数前面的-|–是什么意思?如果动手实验发现print(opt.a)为什么会报错?那就接着边看边动手实验吧!如果有问题欢迎在评论区欧!

三、使用说明

  1. 执行python test.py -h
    在这里插入图片描述
    对各部分进行说明:位置参数和可选参数的区别在后面解释。其余的usage字段、Desctiption字段、补充说明字段中的内容都可以通过
argparse.ArgumentParser() #1、初始化

在获取解析对象的时候进行设置

# usage字段
usage: 程序名 [-h|--help] .....

# Description字段
程序功能描述

# 位置参数说明(必选)
positional arguments:
 ...
 
# 可选参数说明
optional arguments:
...

# 补充说明字段
...

参数说明:
在这里插入图片描述
2. 试验使用argparse.ArgumentParser()
演示一下:

import argparse

parser = argparse.ArgumentParser(prog="Test.py",usage="Good-usage",description="OK-description",epilog="Yes-epilog") #初始化 ArgumentParser()对象 即:获解析器对象
parser.add_argument("-a","--about",type=str,help="this is a para named about") #利用解析器对象内建方法,添加参数解析规则 具体规则继续看下面文章
opt = parser.parse_args() # 利用解析器对象内建方法,开始解析参数,获取解析结果对象

print(opt)
print(opt.about)

在这里插入图片描述
所以可以看到 usage字段,如果不改变,人家自动会显示这个程序的参数有哪些,加了不如不加。epilog、description、usage个人感觉都是起到一个说明的作用。所以可以只使用description字段,其他自动默认就好。至于prog字段,我也没看出来有什么鸟用。

  1. 介绍parser.add_argument()中的各个参数
    在这里插入图片描述
  2. name 与 flags的区别
    我的理解是 不带 -或者–的是指name,这种参数归为positional argument位置参数,带着-|–的是flags,这种形式的参数归为optional argument可选参数。flags是设计用来长短选项,具体见下图在这里插入图片描述

需要注意的是:1、一条add_argument()中不可以同时出现 name和 flags(两种flags格式的参数都不行)
2、positional argument位置参数在命令行中必须对其按照顺序赋值,只可以通过相对位置来赋值而不可以使用name=value这种形式,可读性极其不友好,由于必须对其赋值,所以default默认值形同虚设,required也不能与位置参数同时使用,如果其中一个参数使用nargs=“*”或者+代表可以接受一个或者多个,零个或者多个参数的可变参数数量的设定之后,使用起来极其不友好。纯纯建议是不用

parser.add_argument("e",type=str,default="123",help="this is a positional argument") #nagrs可设置此参数可以接受多少个数字
parser.add_argument("f",type=str,default="123",help="this is a positional argument")

在这里插入图片描述
3、optional argument可选参数可以出现长选项中的一个或者同时出现,即使不输入也会默认为None,输入方式以 name value的格式(中间有一个空格)如果此参数接收多个参数则以name value1 value2 …的格式 具体接收多少参数以nargs这个字段控制。

import argparse

parser = argparse.ArgumentParser(description="this is a test about argparse") #初始化 ArgumentParser()对象 即:获解析器对象
parser.add_argument("-a","--about",type=str,default="123",required=False,help="this is an optional argument named about") #利用解析器对象内建方法,添加参数解析规则 具体规则继续看下面文章
parser.add_argument("-b",type=str,help="this is an optional argument")
parser.add_argument("--c",type=str,help="this is an optional argument")
opt = parser.parse_args() # 利用解析器对象内建方法,开始解析参数,获取解析结果对象

print(opt)
# print(opt.about)

在这里插入图片描述
值得注意的是 在程序中使用是opt.about,并不是opt.–about来获取about这个的值,如果长选项与短选项同时出现的话,opt.a(短选项)是会报错的,只能通过长选项来获取传入的参数。

4. action字段用法
当命令行中接收到带有action字段的参数时,执行的操作
在这里插入图片描述
比较常用的就是store_true 与store_false。即接受到该参数时将该参数的值分别置为True 或者False,若未接收到值,则默认设置为default对应的值,如果没有default字段则分别为False或者True,.
需要注意的时,当使用了store_true或者store_false的时候 不能使用flag value的格式,而只能出现一个flag(毕竟不是赋值操作)也不能与type字段同时出现

parser.add_argument("-a","--about",action="store_true",required=False,help="this is an optional argument named about") #利用解析器对象内建方法,添加参数解析规则 具体规则继续看下面文章
parser.add_argument("-b",action="store_false",help="this is an optional argument")
parser.add_argument("--c",type=str,help="this is an optional argument")

在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 19:10:32  更:2022-04-22 19:10:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:01:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码