1.前言

最近尝试学习使用argparse进行参数管理,顺便改善一下我那丝毫都不专业的、简单粗暴的代码习惯。

argparse模块可以让人轻松地编写用户友好地命令行接口,并且还能够自动生成帮助与使用手册,并在用户给程序传入无效参数时报出错误信息。

2.使用步骤

首先我们需要先实例化一个ArgumentParser对象:

import argparse

parser = argparse.ArgumentParser(description = 'A_simple_demo')

description就是对整个程序的简单描述,主要说明程序的功能与作用。

然后我们就可以使用add_argument函数进行参数的添加,参数的添加有以下几种较为典型的例子:

1.

parser.add_argument('echo', help = 'echo the thing you use here')
args = parser.parse_args()
print(args.echo)

这块代码实现的功能是重复命令行中输入的内容,很简单,很鸡肋

2.但是,我们如果直接向parser传递变量,那么它默认接收的是str类型(即使我们传输的是一个数字)

因此,我们还可以对add_argument中的参数类型进行指定:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number", type=int)
args = parser.parse_args()
print(args.square**2) #下面是这段代码运行的结果
$ python3 prog.py 4
16
$ python3 prog.py four
usage: prog.py [-h] square
prog.py: error: argument square: invalid int value: 'four'

这样它就能将输入的数字存储为int类型,而至于不能够存储为int的输入,它就会报错

3.当然我们也可以用default为变量设置一个默认值:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number", type=int, default=3)
args = parser.parse_args()
print(args.square**2) #以下是该代码运行的结果
$ python3 prog.py
9

一般来说,在我们向parser中添加变量时,有了变量名,有了help,有了type,有了default,就已经是个完整的添加变量的流程了。

下面再补充几个add-argument的变量。

4.首先是action='store_true',一旦我们指定了一个变量的action=‘store_true',那么我们只要在命令行中调用这个变量,它就会被定义为True(不需要指定变量的值),例如:

import argparse

parser = argparse.ArgumentParser(description = 'A_simple_demo')

parser.add_argument('--sparse', action='store_true', default=False, help = 'GAT with sparse version or not.')  #这里将sparse的值默认地定义为False,但如果我们在命令行调用--sparse,那么它就会被置为True

print(args.sparse)

#下面是程序运行的结果

$ python parse_test.py --sparse

True

$ python parse_test.py

False

5.我们还可以通过在命令行中输入--help,来获取整个parser的帮助文本,以及各个变量的帮助文本

import argparse

parser = argparse.ArgumentParser(description = 'A_simple_demo')

parser.add_argument('--sparse', action='store_true', default=False, help = 'GAT with sparse version or not.')

parser.add_argument('--seed', type = int, default = 72, help = 'Random seeed.')

parser.add_argument('--epochs', type = int, default = 10000, help = 'Number of epoches to train.')

args = parser.parse_args()

#输出结果
$ python parse_test.py --help usage: parse_test.py [-h] [--sparse] [--seed SEED] [--epochs EPOCHS] A_simple_demo optional arguments:
-h, --help show this help message and exit
--sparse GAT with sparse version or not.
--seed SEED Random seeed.
--epochs EPOCHS Number of epoches to train.

通过--help,我们就可以查看整个模型的功能以及每个变量的作用

6.如果想给变量赋一个列表作为它的值,那么可以如下操作:

import argparse

parser = argparse.ArgumentParser(description = 'A_simple_demo')

parser.add_argument('--list', nargs = '+', default = ['信贷业务', '财务管理'], help = 'A cute list.')

args = parser.parse_args()

print(args.list) 

#代码运行结果如下
$ python parse_test.py --list 请 PSG.LGD战队 挑选 英雄 ['请', 'PSG.LGD战队', '挑选', '英雄']

也就是说,如果要将一系列值整合作为列表传入,可以设置nargs='+',如果希望指定不同类型的值,可以设置type=int(或者其它形式)

Python argparse参数管理学习笔记1的更多相关文章

  1. C++内存管理学习笔记(7)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  2. C++内存管理学习笔记(5)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  3. C++内存管理学习笔记(6)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  4. $《利用Python进行数据分析》学习笔记系列——IPython

    本文主要介绍IPython这样一个交互工具的基本用法. 1. 简介 IPython是<利用Python进行数据分析>一书中主要用到的Python开发环境,简单来说是对原生python交互环 ...

  5. Docker Image管理学习笔记,ZT

    Docker Image管理学习笔记 http://blog.csdn.net/junjun16818/article/details/38423391

  6. Python 开发与接口测试学习笔记

    这是我跟着虫师学习中积累下来的学习笔记,写得比较简单,适合想学习Python开发与接口测试的初学者学习. 一.开发投票系统 1.参考官网文档,创建投票系统. https://docs.djangopr ...

  7. Linux文件与目录管理(学习笔记)

    本笔记为<鸟哥linux私房菜>第六章学习笔记 一.目录与路径 相对路径与绝对路径 绝对路径:一定由根目录 / 写起              正确度比较好 相对路径:不是由 / 写起  ...

  8. Python框架之Django学习笔记(十七)

    Django框架之表单(续二) 今天的这篇博客将是Django学习笔记博客的最后一篇,基本每周最少一篇的Django框架学习,坚持到今天也实属不易,当然了,这个框架的学习仅仅是Django框架的基础部 ...

  9. C++内存管理学习笔记(4)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  10. C++内存管理学习笔记(3)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

随机推荐

  1. 磊磊零基础打卡算法:day19 c++字符串hash

    5.22 字符串hash: 字符哈希串的意思 其实就是将字符串的前缀转换为数来存值由于每位的权值是不一样的 所以每个前缀值都对应着唯一的一种字符串: 主要用途:字符串/数据的比较,是kmp的一种替代: ...

  2. Matlab %补充---用的多的函数

    Input  promat = 'This is a sentence.' x = input(prompt) %显示prompt中的文本并等待用户输入数值或者表达式后按Return %如果用户什么都 ...

  3. 微信小程序页面间通的5种方式

    PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个双Tab框架PageA和Pag ...

  4. LaTeX in 24 Hours - 3. Formatting Texts I

    文章目录 本章内容:文本格式 I 3.1 Sectional Units 3.2 Labeling and Referring Numbered Items 3.3 Texts Alignment 3 ...

  5. HGD2-LSP选择集专题-网络整理

    [Visual Lisp]图元选择集专题 图元选择集专题 ;;★★★01.选择集操作★★★ (setq ss (ssadd));;创建一个空选择集 (ssadd (car(entsel)) ss);; ...

  6. luac编译命令

    luac -o out.lua 1.lua 可以不要后缀 luac -o out 1.lua

  7. 关于IDEA新建Maven项目时,会卡死,无法实现新建问题的具体解决

    对于问题的描述 在进行新建项目时,突然就出现了选择好一切之后,点击CREATE后,直接卡死停滞(对于一个菜菜来说,只能通过电脑重启来改变一下它无法动弹的状态了) 对于该问题的解决 解决的话,具体步骤如 ...

  8. Typora编辑区域空白过大问题

    参考博客:https://blog.csdn.net/m0_55485287/article/details/115207178 在哪个文件编辑? 1.找到使用的主题,打开主题文件夹 2.找到对应的c ...

  9. web初始:html记忆

    12.13html框架 <! DOCTYPE html> <html lang="zh-CN"> <head> <meta charset ...

  10. 小笨自采集在线电脑壁纸 v2.0-支持移动端自适应,支持https

    这周闲着没事,翻着网站,记得去年的发表的一篇文章小笨分享一款高清电脑壁纸API,主要是将孟坤壁纸改造支持https,还加了一个搜索功能.以前的壁纸是这样的: 但是,不支持移动端浏览,于是小笨趁着这周周 ...