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文档

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,074评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,181评论 3 410
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 173,579评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,741评论 1 304
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,675评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,144评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,344评论 3 433
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,429评论 0 282
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,984评论 1 328
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,960评论 3 351
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,057评论 1 359
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,658评论 5 352
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,349评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,757评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,943评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,670评论 3 384
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,116评论 2 368

推荐阅读更多精彩内容

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