1. 程式人生 > >deepwalk原始碼解讀1: argparse

deepwalk原始碼解讀1: argparse

argparse 是 Python 內建的一個用於命令項選項與引數解析的模組,通過在程式中定義好我們需要的引數,argparse 將會從 sys.argv 中解析出這些引數,並自動生成幫助和使用資訊。最常用的有:

  • ArgumentParser()
  • add_argument()
  • parse_args()

這裡的引數包括兩種,一種是定位引數”positional arguments”,又叫做必須 引數,一種是可選引數”optional arguments”。

1. 新增定位引數

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import argparse

parser
= argparse.ArgumentParser() parser.add_argument('your_positional_arguments', type=int, help='display an integer') args = parser.parse_args() print(args.your_positional_arguments)

在命令列中執行:

python ForArgumentParser.py

會給出這樣的結果:

usage: ForArgumentParser.py [-h] your_positional_arguments
ForArgumentParser.py
: error: the following arguments are required: your_positional_arguments

這句話告訴我們:在我們建立的parser中有一個預置的可選引數”-h”,即help,還有一個是必選引數”your_positional_arguments”,這個是我們自己新增的必選引數。

在命令列中執行

python ForArgumentParser.py -h

會給出這樣的結果:

usage: ForArgumentParser.py [-h] your_positional_arguments

positional arguments:
  your_positional_arguments
                        display an integer
optional arguments: -h, --help show this help message and exit

它更加詳細的解釋了各個引數的情況,特別的,我們看到”your_positional_arguments”這個引數對應的解釋”display an integer”就是我們我們在程式碼中新增的句子。

在命令列中執行

python ForArgumentParser.py 32

會給出這樣的結果:

32

這表明程式正確的解析了我們的命令,打印出了32。如果我們輸入的不是數字而是字元呢?如

python ForArgumentParser.py adb

會給出這樣的結果:

usage: ForArgumentParser.py [-h] your_positional_arguments
ForArgumentParser.py: error: argument your_positional_arguments: invalid int value: 'abc'

程式會對我們的輸入做檢查,這中檢查是根據我們之前的語句

parser.add_argument('your_positional_arguments', type=int, help='display an integer')

進行的。