学习
实践
活动
专区
工具
TVP
写文章
专栏首页MeteoAIPython 命令行参数解析库argparse

Python 命令行参数解析库argparse

在工作业务中,有些函数的调用要尽量傻瓜,能够让其他人能够方便地调用,毕竟甲方是爸爸。

假设我有一个python程序,姑且叫extract_WRF.py,内部代码如下例子一,脚本中的main主函数功能简化为打印出输入的参数,即:

print(zone,input_source_dir,output_source_dir,features,levels)

参数有zone,input_source_dir,output_source_dir,feature,levels,但是该函数print不能在命令行运行,只能在脚本内部调用,于是我们需要python标准库内的argparse[1]来帮忙。

使用步骤:

1)import argparse 首先导入模块

2)parser = argparse.ArgumentParser() 创建一个解析对象

3)parser.add_argument() 向该对象中添加你要关注的命令行参数和选项

4)parser.parse_args() 进行解析

对于第2步, 通过help parser ,显示其参数有:

- pro	                        --程序名称,默认为 sys.argv[0]
-usage	                      --用法信息,默认从参数自动获取
-description	                -- 描述项目是做什么的
-epilog	                      --紧随着参数描述(argument)的文本
-formatter_class	            --自定义帮助信息的格式
-prefix_chars	                -- 命令行的前缀
- fromfile_prefix_chars	      -- 额外的参数应该读取的文件的前缀字符集(默认:None)
- argument_default	          -- 参数的全局默认值(默认:None)
- conflict_handler	          --解决冲突的可选策略
-add help	                    - 给解析器添加-h/–help 选项(默认: True)

对于第3步,依次增加所需参数,并规定其是否是必须参数、类型、默认值、个数。比如required = True 规定其为必要参数,type=str 定义其为字符串,默认值为‘d02’,帮助信息为’WRF模拟区域d01,d02,d03中的一个‘。

对于 features 参数,我们利用nargs来指定 featuers 参数后面的值有多少个,默认为1,本文例子中定义为*,代表无穷多个,即nargs *来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值。

例子一:

# 整个脚本名称叫extact_WRF.py
import time import os
import sys  import argparse
def parse_arguments(argv):    
    parser = argparse.ArgumentParser() #   
    # 添加参数名、默认值,类型  
    parser.add_argument('--zone',required = True, type=str, default ='d02', help='one of the 3 WRF model zones: d02,d01 OR d03')    
    parser.add_argument('--input_source_dir', type= str , default='/publi/home/wang/wrf_1/', help='WRF data location')    
    parser.add_argument('--output_source_dir', type=str, default='/public/home/test_read_stns', help='aim dir which save output')                     
    parser.add_argument('--features', nargs = '*', default=['RH','RA','SW','PBLH','UU','VV','TA','PR'], help='wanted feature name')    
    parser.add_argument('--levels', nargs = '*', default=[1000,950,900,850,800,750,650]  , help='wanted Pressure levels ,units:hPa')    
    return parser.parse_args(argv)
def main(args): #接收输入参数#打印输入的参数

    print(args.zone,
        args.input_source_dir,
          args.output_source_dir,
          args.features,
          args.levels)
 if __name__ == "__main__":
    start = time.time()
    main(parse_arguments(sys.argv[1:]))

    end = time.time()
    print('run time: ', end - start)
    print('extract WRF  data success! \n')

在命令行输入python extract_WRF --help ,会打印出各个参数的说明:

usage: extract_WRF.py [-h] [--zone ZONE]
                               [--input_source_dir INPUT_SOURCE_DIR]
                               [--output_source_dir OUTPUT_SOURCE_DIR]
                               [--features [FEATURES [FEATURES ...]]]
                               [--levels [LEVELS [LEVELS ...]]]

optional arguments:
  -h, --help            show this help message and exit
  --zone ZONE           one of the 3 WRF model zones: d02,d01 OR d03
  --input_source_dir INPUT_SOURCE_DIR
                        WRF data location
  --output_source_dir OUTPUT_SOURCE_DIR
                        aim dir which save output
  --features [FEATURES [FEATURES ...]]
                        wanted feature name
  --levels [LEVELS [LEVELS ...]]
                        wanted Pressure levels ,units:hPa

如果不使用默认的参数,在命令行输入python extract_WRF.py --zone 'd03' --features 'UU' 'PBLH'

打印出了所输入的新参数,说明输入参数调用成功。

d03 /public/home/wang/wrf_1/ /public/home/test_read_stns_1day ['UU', 'PBLH'] [1000, 950, 900, 850, 800, 750, 650]
run time:  0.0012843608856201172
extract WRF  data success!

实际上,python 还有其他的命令行解析库,比如Flask 作者写的click,谷歌开源的fire。

文章分享自微信公众号:
MeteoAI

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:铁柱
原始发表时间:2019-07-19
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Python解析命令行参数 - argparse

    parser.add_argument("--port", help="database port", type=int, default=3306)

    十毛
  • Python | 使用argparse解析命令行参数

    今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse。

    用户8639654
  • python:argparse用于命令行参数解析

    argparse是python中内置的命令行解析模块,内置于python,导入即可使用。

    生信菜鸟团
  • Python | 使用argparse解析命令行参数

    今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse。

    TechFlow-承志
  • Python解析命令行读取参数 — argparse模块

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包使得这一工作变得简单而规范。PS:...

    全栈程序员站长
  • python: argparse库 & 命令行解析工具

    JNingWei
  • python argparse(参数解析

    # 创建argparse对象,并将产品简要说明加入 show = '程序说明' ===>程序简要说明(字符串),输出help时会显示 p = argpa...

    py3study
  • 在 Python 中使用 argparse 解析命令行参数

    使用 解析命令行参数时argparse,第一步是配置一个ArgumentParser 对象。这通常在全局模块范围内完成,因为仅配置 解析器没有副作用。

    KINGISS
  • python argparse处理命令行参数

    对于脚本编程而言,经常需要从命令行传递参数到脚本中。对于命令行参数的定义和使用,有一套完整的规则,以linux上的ls命令为例

    生信修炼手册
  • Python 利用argparse模块实现脚本命令行参数解析

    如上,以上代码实现是针对单个模块脚本,如果要在多个模块中使用咋办?解决方法为封装为类,具体参见“代码实践2”

    授客
  • 【python】命令行参数argparse用法详解

    prog.py是我在linux下测试argparse的文件,放在/tmp目录下,其内容如下:

    zenRRan
  • [编程经验] 利用TensorFlow和argparse模块解析命令行参数

    今天的内容主要包括如何用TensorFlow解析命令行参数和利用Python自带的argparse模块解析命令行参数。我会分别写一个例子,通过这个例子彻底学会如...

    用户1622570
  • Python中的参数解析argparse用法

    在使用python写脚本的时候,我们经常会用到命令行解析包argparse,我们引入这个包之后,就可以对传入python的参数进行解析,得到我们想要的结果...

    AsiaYe
  • 浅谈Python 命令行参数argparse写入图片路径操作

    命令行参数是在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。

    砸漏
  • Python3 初学实践案例(3)argparse 命令行参数库的使用

    Python3 初学实践案例(3)argparse 命令行参数库的使用 在前面一篇博文中 http://blog.csdn.net/fungleo/articl...

    FungLeo
  • python | argparse传递参数

    通过命令行的形式来传递参数,使得配置参数容易起来。这里介绍python包argparse

    努力在北京混出人样
  • Python笔记:外部参数传入考察(一)argparse库

    在编程中,我们往往会遇到需要通过外部参数来控制脚本运行模式的情况,在通用的框架类代码中,这种情况尤为明显,因此,这里,我们来考察一下如何将参数传入到脚本文件中,...

    codename_cys
  • Python的命令行参数解析

    命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse。下面主要介绍两种解析Python命令行参数的方式...

    Tyan
  • argparse------用于命令行选项、参数和子命令的解析器

    argparse模块使编写用户友好的命令行界面变得很容易。程序定义了它需要什么参数,argparse将找出如何从sys.argv中解析这些参数。argparse...

    狼啸风云

扫码关注腾讯云开发者

领取腾讯云代金券