Python常用模块(一)--argparse模块

argparse模块简介

    今天看到一个同事写的脚本,脚本中用了argparse模块。这个模块之前我没有使用过,所以需要系统的学习一下。

    argparse简介:

  • argparse模块是python的一个命令行解析包,可以十分方便的对python文件进行命令行读写。
  • argparse模块是python中自带的模块,不需要再安装。
  • 使用时先导入模块,import argparse

     官网文档:https://docs.python.org/3/library/argparse.html

1. 简单使用

   步骤:

  • 创建 ArgumentParser() 对象
  • 调用 add_argument() 方法添加参数
  • 使用 parse_args() 解析添加的参数
import argparse
parser = argparse.ArgumentParser() parser.add_argument("square", help="请输入一个数字", type=int) parser.add_argument("input_str", help="请输入一个字母", type=str) args = parser.parse_args() print(args.square ** 2) print(args.input_str)

      把上面的代码保存到test_argparse.py文件,

1)命令行运行时,不添加参数:在终端运行python3 test_argparse.py ,运行结果如下:

$python3 test_argparse.py 
usage: test_argparse.py [-h] square input_str
test_argparse.py: error: the following arguments are required: square, input_str  

2)命令行运行时加上-h ,查看帮助:执行python3 test_argparse.py -h,运行结果如下:

$ python3 test_argparse.py -h
usage: test_argparse.py [-h] square input_str

positional arguments:
  square      请输入一个数字
  input_str   请输入一个字母

optional arguments:
  -h, --help  show this help message and exit 

  3) 命令行运行加上参数,按照提示加上一个数字,一个字母:执行python3 test_argparse.py 10 'hello world!' ,  运行结果如下

$python3 test_argparse.py 10 'hello world!'
100
hello world!  

4)如果输入的格式不正确,会提示类型不对,例如第1个参数输入一个字符串,运行结果如下:

$ python3 test_argparse.py 'abcd' 11
usage: test_argparse.py [-h] square input_str
test_argparse.py: error: argument square: invalid int value: 'abcd'

2. 添加一个位置参数

  上面的例子,其实就展示了定位参数的使用。不在举例了

 

3. 为位置参数添加说明

 

 

4. 指定可选参数

  现在看下可选参数的用法,所谓可选参数,也就是命令行参数是可选的,废话少说,看下面例子:  

parser.add_argument("--square", help="display a square of a given number", type=int)
parser.add_argument("--cubic", help="display a cubic of a given number", type=int)

5. 指定参数类型

  之前已经提到了用type参数就可以指定输入的参数类型。而这个type类型还可以表示文件操作的类型从而直接进行文件的读写操作。

parser.add_argument('file', type=argparser.FileType('r')) # 读取文件 args = parser.parse_args() 
for line in args.file: 
    print line.strip()

6. 为参数添加默认值

  一般情况下会设置一些默认参数从而不需要每次输入某些不需要变动的参数,利用default参数即可实现。

parser.add_argument('filename', default='text.txt')

 

posted @ 2019-02-15 17:38  一秒一看  阅读(4138)  评论(0编辑  收藏  举报