专栏首页人工智能LeadAIPython 中argparse模块的使用

Python 中argparse模块的使用

正文共495个字,预计阅读时间5分钟。

Python解析命令行读取参数有两种方式:sys.argv和argparse

1、sys.argv

如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。

1import sys
2print("输入的参数为:%s" % sys.argv[1])

命令行执行效果:

1>python demo.py 1
2输入的参数为:1

2、argparse

如果参数很多,比较复杂,并且类型不统一,那么argparse可以很好的解决这些问题,下面一个实例解释了argparse的基本使用方法。

 1import argparse
 2# description参数可以用于描述脚本的参数作用,默认为空
 3parser=argparse.ArgumentParser(description="A description of what the program does")
 4parser.add_argument('--toy','-t',action='store_true',help='Use only 50K samples of data')
 5 parser.add_argument('--num_epochs',choices=[5,10,20],default=5,type=int,help='Number of epochs.')
 6parser.add_argument("--num_layers", type=int, required=True, help="Network depth.")
 7
 8args=parser.parse_args()
 9print(args)
10print(args.toy,args.num_epochs,args.num_layers)

命令行执行效果:

1>python demo.py --num_epochs 10 --num_layers 10
2Namespace(num_epochs=10, num_layers=10, toy=False)
3False 10 10

2.1.基本使用

1parser.add_argument('--toy','-t',action='store_true',help='Use only 50K samples of data')

--toy:为参数名称; -t:为参数别称; action='store_true':参数是否使用,如果使用则为True,否则为False。

1>python demo.py -t --num_epochs 10 --num_layers 10
2Namespace(num_epochs=10, num_layers=10, toy=True)
3True 10 10 # 对比和上次执行的区别

help:参数说明

2.2.相关参数

实例1

1parser.add_argument('--num_epochs',choices=[5,10,20],default=5,type=int,help='Number of epochs.')

choices:候选值,输出参数必须在候选值里面,否如会出现下面的结果:

1>python demo.py -t --num_epochs 30 --num_layers 10
2usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERS
3demo.py: error: argument --num_epochs: invalid choice: 30 (choose from 5, 10, 20)

default:默认值,如果不输入参数,则使用该默认值

1>python demo.py -t  --num_layers 10
2Namespace(num_epochs=5, num_layers=10, toy=True)
3True 5 10

int:参数类型

实例2

1parser.add_argument("--num_layers", type=int, required=True, help="Network depth.")

required:为必选参数,如果不输入,则出现以下错误:

1>python demo.py -t --num_epochs 10
2usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERS
3demo.py: error: the following arguments are required: --num_layers

实例3

-h:输出参数使用说明信息

 1>python demo.py -h
 2usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERS
 3
 4A description of what the program does
 5
 6optional arguments:
 7-h, --help            show this help message and exit
 8--toy, -t             Use only 50K samples of data
 9--num_epochs {5,10,20}
10                Number of epochs.
11 --num_layers NUM_LAYERS
12                Network depth.

原文链接:https://www.jianshu.com/p/8f781143c524

本文分享自微信公众号 - 人工智能LeadAI(atleadai)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 调优哪家强——tensorflow命令行参数

    深度学习神经网络往往有过多的Hyperparameter需要调优,优化算法、学习率、卷积核尺寸等很多参数都需要不断调整,使用命令行参数是非常方便的。有两种实现方...

    用户1332428
  • TensorFlow从0到1 | 第九章“驱魔”之反向传播大法

    上一篇8 万能函数的形态:人工神经网络解封了人工神经网络,如果用非常简短的语言来概括它,我更喜欢维基百科的诠释: 人工神经网络是一种模仿生物神经网络(动物的中...

    用户1332428
  • 多层感知机(MLP)与神经网络结构 | 深度学习笔记

    为了尽量能形成系统的体系,作为最基本的入门的知识,请参考一下之前的一篇:感知机 | 神经网络 。 上篇文章让你形成对于神经网络最感性的理解。有些看不懂的直接忽...

    用户1332428
  • Python 中argparse模块的使用

    如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。

    致Great
  • android viewpager实现竖屏滑动效果

    那如果做成竖屏的这种效果呢 。我百度过很多,效果都不是很好,有的代码特别多而且存在很多问题。我结合了以前别人的代码现在来教大家个简单的实现过程。

    砸漏
  • # 实现原理

    用户1175783
  • leetcode Problem 5 最长子回文串

    1、暴力做法。 遍历所有的子串,求出最长。复杂度O(n3)。显然GG了。 2、动态规划 把一个大问题分解成每一个小问题进行求解。假设字符串s,则s[...

    flytam
  • 编程思想:巧用位运算重构代码

    巧用位运算能极大的精简代码和提高程序效率。所以,在一些优秀的开源代码中,经常能出现位运算。所以,把位运算这种思想迁移到业务代码里,有时候往往能起到柳暗花明般的重...

    用户1161731
  • LeetCode小白菜笔记2:Reverse Integer

    LeetCode小白菜笔记[2]:Reverse Integer7. Reverse Integer [Easy] 题目: Given a 32-bit sig...

    企鹅号小编
  • 012. 整数转罗马数字 | Leetcode题解

    例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。27 写做 XXVII , 即为 XX + V + II 。

    苏南

扫码关注云+社区

领取腾讯云代金券