python命令列引數解析getopt sys模組

2021-09-12 21:45:38 字數 2286 閱讀 1318

先看乙個例子,這樣會便於理解

獲取命令列引數

python環境下可以使用sys模組得到命令列引數

import getopt

import sys

print(sys.ar**)

c:\users\administrator\>python 222.py -o t --help cmd file1 file2

['222.py', '-o', 't', '--help', 'cmd', 'file1', 'file2']

# 由此可見,所有命令列引數以空格為分隔符,儲存在sys.ar**列表中,其中第乙個為檔名

選項的寫法要求:

短格式:"-「號後面要緊跟乙個選項字母。如果還有此選項的附加引數,可以用空格分開,也可以不分開。長度任意,可以用引號。

例如:-o

-o 「a b」

長格式:」–「號後面要跟乙個單詞。如果還有些選項的附加引數,後面要緊跟」=",再加上引數。"="號前後不能有空格。

例如:–help=file1

如何使用getopt進行引數分析及處理?

第一步:匯入sys,getopt模組

第二步:分析命令列引數

第三步:處理結果

import getopt

import sys

# print(sys.ar**)

def usage():

print(

"""usage:sys.args[0] [option]

-h or --help:顯示幫助資訊

-m or --module:模組名稱 例如:ansible all -m shell -a 'date'

-a or --args:模組對於的引數 例如:ansible all -m shell -a 'date'

-v or --version:顯示版本

""" )

if len(sys.ar**) == 1:

usage()

sys.exit()

try:

opts, args = getopt.getopt(sys.ar**[1:], "ho:m:a:", ["help", "output="]) # sys.ar**[1:] 過濾掉第乙個引數(它是指令碼名稱,不是引數的一部分)

except getopt.getopterror:

print("ar** error,please input")

# 使用短格式分析串「ho:m:a:」

當乙個選項只表示開關狀態時,即後面不帶任何引數時,在分析串中寫入選項字元,例如:-h表示獲取幫助資訊,顯示完成即可,不需任何引數

當乙個選項後面需要帶附加引數時,在分析串中寫入選項字元同時後面加乙個「:」號,例如:-m表示指定模組名稱,後面需加模組名稱

# 使用長格式分析串列表:["help", "output="]。

長格式串也可以有開關狀態,即後面不跟"="號。如果跟乙個等號則表示後面還應有乙個引數。這個長格式表示"help"是乙個開關選項;"output="則表示後面應該帶乙個引數。

# print(opts)

# print(args)

# 呼叫getopt函式。函式返回兩個列表:opts和args。

# opts為分析出的格式資訊,是乙個兩元組的列表。每個元素為:(選項串,附加引數)。如果沒有附加引數則為空串''。

# args為不屬於格式資訊的剩餘的命令列引數。

# 整個過程使用異常來包含,這樣當分析出錯時,就可以列印出使用資訊來通知使用者如何使用這個程式。

# 以下部分即根據分析出的結果做相應的處理,並將處理結果返回給使用者

for cmd, arg in opts: # 使用乙個迴圈,每次從opts中取出乙個兩元組,賦給兩個變數。cmd儲存選項引數,arg為附加引數。接著對取出的選項引數進行處理。

if cmd in ("-h", "--help"):

print("help info")

sys.exit()

elif cmd in ("-o", "--output"):

output = arg

elif cmd in ("-m", "--module"):

module_name = arg

elif cmd in ("-a", "--module_args"):

module_args = arg

elif cmd in ("-v", "--version"):

print("%s version 1.0" % sys.ar**[0])

python解析命令列引數

使用乙個先進的模組名為argparse,跟unix程式的命令列引數很像。直接對code做個筆記 import sys import argparse def main args print first name directory s args.first name print first para...

解析命令列引數

include include include include int make argv const char astr,const char delimiters,char argvp void free argv char argvp int main int argc,char argv i...

Python的命令列引數解析

命令列引數解析在程式語言中基本都會碰到,python中內建了乙個用於命令項選項與引數解析的模組argparse。下面主要介紹兩種解析python命令列引數的方式。解析python中命令列引數的最傳統的方法是通過sys.argv。demo如下 usr env python python coding ...