Python3命令列引數之getopt模組詳解

2021-10-07 20:13:19 字數 2207 閱讀 1027

具體文件請檢視:

print

(getopt.__doc__)

這個模組一共有兩個函式,兩個屬性:

函式:

屬性:

我們主要經常使用getopt這個函式:

getopt.getopt(args, shortopts, longopts=

)args指的是當前指令碼接收的引數,它是乙個列表,可以通過sys.ar**[1:

]獲得shortopts 是短引數,類似於:python test.py -h # 輸出幫助資訊

longopts 是長引數,類似於:python test.py -

help

# 輸出幫助資訊

這個函式返回乙個元組,裡面有兩個元素,第乙個是options的鍵值對列表,即輸入的選項;第二個是args的列表,即輸入的引數。具體說明請參看官方文件。

opts 為分析出的格式資訊。args 為不屬於格式資訊的剩餘的命令列引數。

import getopt

import sys

ret = getopt.getopt(sys.ar**[1:

],'-h',[

'help'])

print

(ret)

結果如下:

λ python test.py -h([

('-h',''

)],[

])λ python dev1.py -

-help([

('--help',''

)],[

])λ python dev1.py -

-help abc123([

('--help',''

)],[

'abc123'

])

可以看到已經接收了引數。並且做了處理,為什麼要傳入sys.ar**[1:]?

因為sys.ar**裡的ar**[0]是當前指令碼的檔名,不需要它去參與。

這個是引數+引數值的例子:

#!/usr/bin/env python

import getopt

import sys

opts,args = getopt.getopt(sys.ar**[1:

],'hf:v',[

'help'

,'filename='

,'version'])

for opt_name,opt_value in opts:

if opt_name in

('-h'

,'--help'):

print

("[*] help info"

)if opt_name in

('-v'

,'--version'):

print

("[*] version is 0.01 "

)if opt_name in

('-f'

,'--filename'):

filename = opt_value

print

("[*] filename is "

,filename)

# do something

exit(

)

執行測試結果如下:

λ python dev1.py -

-file

=test.txt[*

] filename is test.txt

λ python dev1.py -

-file=[

*] filename is

λ python dev1.py -f test.txt[*

] filename is test.txt

λ python dev1.py -hv[*

] help info[*

] version is

0.01

來詳細解釋一下這幾行**:

首先從短引數名開始。

定義了'hf:v',f後的:代表了f引數是有值的,是乙個引數名+引數值的引數。

長引數名的方式和短引數差不多,唯一的區別就是長引數如果要接收值,那必須得在後面加上乙個=

Python3 命令列引數

python 提供了getopt模組來獲取命令列引數。python test.py arg1 arg2 arg3python 中也可以所用sys的sys.argv來獲取命令列引數 注 sys.argv 0 表示指令碼名。例項 test.py 檔案 如下 usr bin python3 import ...

Python3 怎麼使用python命令列引數

python3 test.py arg1 arg2 arg3getopt模組是專門處理命令列引數的模組,用於獲取命令列選項和引數,也就是sys.ar 命令列選項使得程式的引數更加靈活。支援短選項模式 和長選項模式 該模組提供了兩個方法及乙個異常處理來解析命令列引數。getopt.getopt 方法 ...

python 命令列引數

本篇將介紹python中sys,getopt模組處理命令列引數 如果想對python指令碼傳引數,python中對應的argc,argv c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.argv 指令碼名 sys.argv 0 引數1 sys.argv 1 引數2 sys....