執行python程式時,有時需要在命令列傳入一些引數。常見的方式是在執行時,在指令碼名後直接追加空格分隔的引數列表(例如 python test.py arg0 arg1 arg2),然後在指令碼中就可以通過sys.argv獲取所有的命令列引數。這種方式的優點是傳參方便,引數獲取簡單;缺點是執行指令碼時,必須知道引數的順序,並且不能設定預設值,所有引數每次都必須傳入。還有一種命令列傳參方式是通過帶選項的方式進行傳參(例如python test.py -p0=arg0 -p1=arg1)。這種方式的優點是引數不用按照固定的順序傳入,並且對於有預設值的引數,可以不傳引數直接使用預設值;缺點是傳入引數時需要額外加上選項。
對於帶選項的命令列引數,可以通過python自帶的getopt模組來進行解析。主要方法:
getopt(args, shortopts, longopts = ):解析命令列選項和引數列表。
args是不包括執行程式引用的引數列表,通常來說就是sys.args[1:]。
shortopts是指令碼要識別的短選項字母,如果短選項需要引數,需要在字母後加冒號「:」。
longopts是支援的長選項,是乙個長選項名稱的列表。選項名稱不包括「-」。需要引數的長選項,需要在後面加乙個等號「=」。
返回值包括兩個列表:第乙個列表中是(選項,值),如果選項沒有引數,值為空字串。第二個列表是剝離選項之後的程式引數列表。長項前用「--」,短項前用「-」。
另外要注意的是當進行命令列引數解析時,如果遇到了非選項的引數時,就會停止帶選項引數的解析。
#!/usr/bin/python
# -*- coding: gbk -*-
import sys
import getopt
def printusage():
print ('''usage: test.py -i -o test.py --in=--out=''')
def main():
inputarg=""
outputarg=""
try:
opts, args = getopt.getopt(sys.argv[1:],"hi:o:",["in=","out="])
except getopt.getopterror:
printusage()
sys.exit(-1)
for opt,arg in opts:
if opt == '-h':
printusage()
elif opt in ("-i", "--in"):
inputarg=arg
elif opt in ("-o","--out"):
outputarg=arg
print ('輸入:'+inputarg)
print ('輸出:'+outputarg)
print ('其他程式引數:'+",".join(args))
if __name__=="__main__":
main()
命令列選項
試題名稱 命令列選項 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 請你寫乙個命令列分析程式,用以分析給定的命令列裡包含哪些選項。每個命令列由若干個字串組成,它們之間恰好由乙個空格分隔。這些字串中的第乙個為該命令列工具的名字,由小寫字母組成,你的程式不用對它進行處理。在工具名字...
命令列選項
試題編號 201403 3 試題名稱 命令列選項 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 請你寫乙個命令列分析程式,用以分析給定的命令列裡包含哪些選項。每個命令列由若干個字串組成,它們之間恰好由乙個空格分隔。這些字串中的第乙個為該命令列工具的名字,由小寫字母組成,你的程式...
REAgentC 命令列選項
應用到 windows 7 reagentc.exe 除了可用於部署自定義 windows r 恢復環境 windows re 還可用於啟用映像恢復解決方案。可以在離線 windows 映像上或執行 windows 的作業系統上執行reagentc命令。如果使用 windows pe 2.x 在離線...