當寫一個Python指令碼時經常會遇到不同引數不同功能的情況,如何做一個更好看的命令幫助資訊以及對命令引數解析呢?
這就需要使用argparse模組
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os import argparse __metaclass__ = type class Inventory: def __init__(self): self._read_cli_args() if self._args.list: # 如果輸入的引數為 --list 那麼將執行這裡 print("list") elif self._args.host: print(self._args.host) def _read_cli_args(self): # 建立一個解析物件 parser = argparse.ArgumentParser(description='這是命令的說明描述資訊') # required=True 表示必須提供該引數 parser.add_argument("--type", "-t", required=True, help="型別 tomcat|dubbo") """ 向物件新增你要關注的命令列引數 一般寫兩個 一個長參 一個短參 action表示值賦給鍵的方式 布林值(store_true|store), 當讀取的引數中出現指定的引數時的行為,也就是儲存True還是False 我這裡寫的是 store_true 表示輸入 inventory.py --list 後,你獲取list值就是true否則就是false """ parser.add_argument("--list", "-l", action="store_true", help="--list 引數功能說明") # store的含義是需要在 --host 接收一個引數,並把這個引數儲存到這個host中 parser.add_argument("--host", action="store", help="--host 引數功能說明") # 為引數值指定可選範圍,也就是這個引數的值只能是 0 1 2 其中之一,且預設值為1 parser.add_argument("-c", "--mychoice", type=int, choices=[0, 1, 2], default=1, help="我的選擇") self._args = parser.parse_args() # 進行解析 # 解析完成後,self_args包含了所有必要的命令引數和值,如果想要獲取那麼就 self._args.鍵 來獲取 print(self._args) def main(): Inventory() if __name__ == "__main__": try: main() finally: sys.exit()
幫助