python 傳入命令行參數 argparse


有的時候自己用python寫個工具想通過命令行傳遞參數,雖然有sys.argv可以用,但是參數類型多種多樣,sys.argv是無法滿足我們的需求的。有些參數是必須的,有些參數不是必須的,甚至有的時候還想寫個help幫助自己和大家瞭解每個參數的作用,因此掌握一個通用的傳參方法是非常重要的。argparse就可以滿足我們所有需求啦,真的超級好用啊!
argparse的使用方法:

import argparse

#創建一個parser解析器
parser = argparse.ArgumentParser(description="process some packets")
#添加參數
parser.add_argument("pcap",help="a pcap file from wireshark or tcpdump")
parser.add_argument("filter",default=None,help="a rule to filter packets such as 'udp'")
#解析參數
args = parser.parse_args()
#使用參數
print(args.pcap)
print(args.filter)

下面瞭解一下創建解析器函數ArgumentParser的參數吧,以後方便使用:
lass argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)

prog - 程序名稱 (default: sys.argv[0])
usage - 一個字符串用來描述如何使用程序 (default: generated from arguments added to parser)
description - 一個文本,在參數help前顯示 (default: none)
epilog - 一個文本,在參數help後顯示 (default: none)
parents - A list of ArgumentParser objects whose arguments should also be included
formatter_class - A class for customizing the help output
prefix_chars - The set of characters that prefix optional arguments (default: ‘-‘)
fromfile_prefix_chars - The set of characters that prefix files from which additional arguments should be read (default: None)
argument_default - 參數的全局默認設置 (default: None)
conflict_handler - The strategy for resolving conflicting optionals (usually unnecessary)
add_help - Add a -h/--help option to the parser (default: True)
allow_abbrev - Allows long options to be abbreviated if the abbreviation is unambiguous. (default: True)

note:上面參數經常使用的就是 usage、description、epilog。其中usage是自動生成的,description與epilog是對參數進行補充的。

下面介紹用來添加參數的函數add_argumentparser。add_argument()定義了每個參數該如何被解析,它的參數包括:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

name or flags - 參數選項的名稱或列表, e.g. foo or -f, --foo.
action - 在命令行中遇到此參數時要採取的基本操作類型.
nargs - 該從命令行中讀取參數的數量.
const - 某些操作和nargs選擇所需要的常量.
default - 若參數不在命令行裏的時候,使用的默認值.
type - 應將命令行參數轉換爲的類型,例如integer.
choices - 一個 container,參數的允許值.
required - 是否可以省略命令行選項.
help - 簡單描述一下這個參數的作用.
metavar - 在usage描述中,這個參數的名稱.
dest - 要添加到parse_args()返回的對象中的屬性的名稱.

note:可參數起名字的時候,可選參數使用 - 或 -- 作爲前綴例如 -f --foo
而必須的參數沒有前綴,例如 foo。

下面再說說解析參數的函數parse_args,它主要有兩個參數
parse_args(args=None, namespace=None)
args - parse_args除了可以使用命令行進行參數傳遞,也可以使用args通過函數參數傳遞。
namespace - 一個用來獲取屬性的對象(unknown)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章