16 命令列引數解析

2021-09-10 16:52:26 字數 2420 閱讀 7328

python 提供了getopt模組來獲取命令列引數。

$ python test.py arg1 arg2 arg3
python 中也可以所用syssys.ar**來獲取命令列引數:

注:sys.ar**[0]表示指令碼名。

1、使用sys模組

test.py檔案**如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys

print

('引數個數為:'

,len

(sys.ar**)

, '個引數。』)

print

('引數列表:'

,str

(sys.ar**)

)

執行以上**,輸出結果為:

$ python test.py arg1 arg2 arg3

引數個數為:

4 個引數。

引數列表:

['test.py'

,'arg1'

,'arg2'

,'arg3'

]

2、getopt模組

getopt模組是專門處理命令列引數的模組,用於獲取命令列選項和引數,也就是sys.ar**。命令列選項使得程式的引數更加靈活。支援短選項模式(-)和長選項模式(—-)

該模組提供了兩個方法及乙個異常處理來解析命令列引數。

(1)getopt.getopt方法

getopt.getopt方法用於解析命令列引數列表,語法格式如下:

getopt.getopt(args, options[

, long_options]

)

方法引數說明:

該方法返回值由兩個元素組成:

(2)exception getopt.getopterror

在沒有找到引數列表,或選項的需要的引數為空時會觸發該異常。

異常的引數是乙個字串,表示錯誤的原因。屬性msgopt為相關選項的錯誤資訊。

usage: test.py -i 

-o

test.py檔案**如下所示:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys, getopt

defmain

(ar**)

: inputfile =

'' outputfile =

''try

: opts, args = getopt.getopt(ar**,

"hi:o:",[

"ifile="

,"ofile="])

except getopt.getopterror:

print

'test.py -i -o '

sys.exit(2)

for opt, arg in opts:

if opt ==

'-h'

:print

'test.py -i -o '

sys.exit(

)elif opt in

("-i"

,"--ifile"):

inputfile = arg

elif opt in

("-o"

,"--ofile"):

outputfile = arg

print

'輸入的檔案為:'

, inputfile

print

'輸出的檔案為:'

, outputfile

if __name__ ==

"__main__"

: main(sys.ar**[1:

])

執行以上**,輸出結果為:

$ python test.py -h

usage: test.py -i

-o $ python test.py -i inputfile -o outputfile

輸入的檔案為: inputfile

輸出的檔案為: outputfile

解析命令列引數

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...

Boost 解析命令列引數

boost中有乙個program options庫,專門用來解析程式命令列引數的。allow long 接受長名稱 allow short 接受短名稱 allow dash for short 允許短選項使用 allow slash for short 允許短選項使用 long allow adja...

python解析命令列引數

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