argparse包用法总结

经常需要使用argparse这个包来写命令行,所以对用法做个记录,以免忘记

Argparse简介

argparse是python自带的一个命令行解析包,非常适合编写可读性好的命令行程序。
要使用的话,直接导入即可,无需另外安装。

实例

新建一个 parse.py文件如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

import argparse

# get parameters
def parse_args():

    description = u"扫描给定项目路径,生成路径下数据信息"

    parse = argparse.ArgumentParser(description=description)

    help = u"输出文件名称"
    parse.add_argument('output', help=help)

    help = u"已记录好的总表,如不存在可用'-'代替"
    parse.add_argument('backup', help=help)

    help = u"需要扫描的项目目录,可输入多个"
    parse.add_argument('filepath', nargs='*', help=help)

    help = u"项目名称"
    parse.add_argument('-p','--project', help=help)

    help = u"数据类型, 默认值为: FASTQ"
    parse.add_argument('-t','--type',default='FASTQ' , help=help)

    help = u"测序平台, 默认值为: Illumina"
    parse.add_argument('-c', '--cexu', default='Illumina', help=help)

    help = u"文库大小, 数据类型:int(整数型)"
    parse.add_argument('-l', '--library',  type=int, help=help)

    args = parse.parse_args()

    return args


if __name__ == '__main__':

    args = parse_args()
    output = args.output
    backup = args.backup
    filepath = args.filepath
    project = args.project
    ...

运行 python parse.py -h

usage: scanData.py [-h] [-p PROJECT] [-t TYPE] [-c CEXU] [-l LIBRARY]
                   output backup [filepath [filepath ...]]

扫描给定项目路径,生成路径下数据信息

positional arguments:
  output                输出文件名称
  backup                已记录好的总表,如不存在可用'-'代替
  filepath              需要扫描的项目目录,可输入多个

optional arguments:
  -h, --help            show this help message and exit
  -p PROJECT, --project PROJECT
                        项目名称
  -t TYPE, --type TYPE  数据类型, 默认值为: FASTQ
  -c CEXU, --cexu CEXU  测序平台, 默认值为: Illumina
  -l LIBRARY, --library LIBRARY
                        文库大小, 数据类型:int(整数型)

可以看到帮助信息是由argparse包自动生成的。且帮助信息是可以自己定义的。

定位参数

在上述程序中,output, backup, filpath这3个参数在帮助信息中是positional arguments,中文意思就是定位参数,用法是不用带-就能使用。顾名思义,这些参数的位置是固定的,前后顺序是无法更换的,且这些参数是必选的,不全的话就会报错。

python scanData.py test.txt
usage: scanData.py [-h] [-p PROJECT] [-t TYPE] [-c CEXU] [-l LIBRARY]
                   output backup [filepath [filepath ...]]
scanData.py: error: too few arguments

可选参数

上述程序中的其他参数,在帮助信息中显示是optional arguments, 意思是可选参数。可以使用-来指定短参数,也可以使用--来表示长参数。可选参数是非必选的,可用可不用。而且顺序是可以随意更换的。

参数设置

argparse中可以对参数的数据类型、默认值、可选值、帮助信息等进行设置。

# !/usr/bin/python
# -*- coding: UTF-8 -*-

import argparse

parse = argparse.ArgumentParser()

help = u"文库大小, 数据类型:int(整数型)"
parse.add_argument('-l', '--library',  type=int, default=150, choice=[150,200], help=help)
args = parse.parse_args()

add_argument方法中,type指定数据类型,default指定默认值,choice指定可选值, help指定自定义帮助信息。nargs可以指定参数的数量,值可以为正整数,也可以为*表示任意个数,可以为0个, 还可以为+,代表1或1以上的个数

在上述的parse.py中,filepath这个参数的个数就是不固定的,可以传入多个参数。参数解析之后,得到的是一个数组。

文档

Argparse文档

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,853评论 18 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,267评论 0 4
  • python Argparse模块的使用 标签:python 参考: Argparse Tutorial:http...
    初来的雨天阅读 2,122评论 0 1
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,877评论 0 38
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,435评论 0 5