python命令列 getopt模組

2022-09-09 16:00:29 字數 2173 閱讀 4587

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

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

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

getopt.getopt(args, options[, long_options])

args: 要解析的命令列引數列表。

options : 以字串的格式定義,options 後的冒號 : 表示如果設定該選項,必須有附加的引數,否則就不附加引數。

long_options : 以列表的格式定義,long_options 後的等號 = 表示該選項必須有附加的引數,不帶等號表示該選項不附加引數。

該方法返回值由兩個元素組成: 第乙個是 (option, value) 元組的列表。 第二個是引數列表,包含那些沒有 - 或 -- 的引數。

opts, args = getopt.getopt(ar**,"hu:p:",["help","ip=","usr=","passwd="])

opts為引數列表。args為引數的值列表。下面是列印的本例中opts和args的值,可以看出有引數的為-u、-p、--ip。沒有引數的為name,會當作普通的args引數。

執行介面:

command_getopt.py原始碼

import sys

import getopt

def usuage():

print("-h:--help 幫助資訊;")

print("-u:--usr 使用者名稱;")

print("-p:--password 密碼;")

print("eg: python -u 'root' -p '123456'")

def start(ar**):

usr = ""

passwd = ""

ip = ""

if len(sys.ar**)<2:

usuage()

sys.exit()

try:

opts, args = getopt.getopt(ar**,"hu:p:",["help","ip=","usr=","passwd="])

except getopt.getopterror:

print("error an argument!")

sys.exit()

#print(opts)

for opt,arg in opts:

if opt in ("-u","--usr"):

usr =arg

elif opt in ("-p","--passwd"):

passwd = arg

elif opt in ("--ip"):

ip = arg

elif opt in ("-h","--help"):

usuage()

if len(usr)>0:

print("使用者名為: ",usr)

if len(passwd)>0:

print("密碼為: ",passwd)

if len(ip)>0:

print("ip位址為: ",ip)

if __name__ == '__main__':

try:

start(sys.ar**[1:])

except keyboardinterrupt:

print("interrupted by user, killing all threads...")

python 命令列引數處理 getopt模組詳解

有時候我們需要寫一些指令碼處理一些任務,這時候往往需要提供一些命令列引數,根據不同引數進行不同的處理,在python裡,命令列的引數和c語言很類似 因為標準python是用c語言實現的 在c語言裡,main函式的原型為int main int argc,char ar 這裡主要指linux平台,ar...

getopt函式,命令列解析

getopt函式 函式功能 用來解析命令列引數,引數argc和ar 分別代表引數個數和內容,跟main 函式裡的命令列引數一樣 函式所在標頭檔案 include 函式原型定義 int getopt int argc,char const ar const char optstring 引數optst...

Python3 getopt解析命令列引數

在學c語言的時候就知道可以通過argc獲取命令列引數個數,可以通過ar 獲取具體引數。但自己寫的程式獲取到的引數一是沒有鍵值形式二是寫的引數不能亂序,和系統命令不太一樣。再往後點知道有getopt這個東西,但印象中嘗試理解其用法很多次都沒什麼結果 最近又越來多寫程式,再次感覺很有必要掌握。這裡以py...