1. 程式人生 > >python如何實現像shell中的case功能

python如何實現像shell中的case功能

short python3.5 [0 語句 type shell中的 url -- 如何實現

我們知道在shell腳本裏是支持case語句,當位置參數為空時,會提示我們怎麽使用腳本 那麽在python怎麽實現呢?也使用case嗎? python裏不支持case語句,但是也有實現case的方法。 這裏我們來講講getopt模塊 技術分享 技術分享 介紹說是解析命令行操作 下面是getopt格式: getopt.getopt(args, shortopts, longopts=[]) args指的是當前腳本接收的參數,它是一個列表,可以通過sys.argv獲得 shortopts 是短參數  啥是短參數啊?  類似於 這樣:python test.py -h # 輸出幫助信息 longopts 是長參數  啥是長參數啊?  類似於 這樣:python test.py -help # 輸出幫助信息
返回值 這個函數返回是一個兩元組的列表(復習一下,元組的值是不可修改的!) 下面我寫一個小例子,讓你稍微頓悟一下
import getopt
import sys

arg = getopt.getopt(sys.argv[1:],-h,[help])
print(arg)

結果如下:
root@Kali:~/python# python3.5 test.py -h
([(-h, ‘‘)], [])
root@Kali:~/python# python3.5 test.py --help
([(--help, ‘‘)], [])

可以看到已經接收了參數。並且做了處理,為啥我傳入sys.argv[1:]?
因為sys.argv裏的argv[0]是當前腳本的文件名,不需要它去參與,要不然你的選項和選項值無法匹配,問題多多。 假設我要接收一個參數+參數值的選項怎麽辦? 再寫個小例子!
 1 #!/usr/bin/env python3.5
 2 import urllib.request
 3 import getopt
 4 import sys
 5 
 6 opts,args = getopt.getopt(sys.argv[1:],-h-f:-v,[help,filename=,version])
 7 for opt_name,opt_value in opts:
 8     if
opt_name in (-h,--help): 9 print("[*] Help info") 10 exit() 11 if opt_name in (-v,--version): 12 print("[*] Version is 0.01 ") 13 exit() 14 if opt_name in (-f,--filename): 15 fileName = opt_value 16 print("[*] Filename is ",fileName) 17 # do something 18 exit()

運行測試結果如下:
root@Kali:~/python# python3.5 test.py --filename=test
[*] Filename is  test
root@Kali:~/python# python3.5 test.py --filename=
[*] Filename is  
root@Kali:~/python# python3.5 test.py --help
[*] Help info
root@Kali:~/python# python3.5 test.py --version
[*] Version is 0.01 
root@Kali:~/python# python3.5 test.py -v
[*] Version is 0.01 
root@Kali:~/python# python3.5 test.py -f test
[*] Filename is  test
root@Kali:~/python#

來詳細解釋一下這幾行代碼 首先從短參數名開始。 我定義了‘-h-f:-v‘ 大家發現沒有,在-f後面多了一個":" 這個":"代表了當前參數是有值的,是一個參數名+參數值的參數 如果我再加一個-o: 那麽證明-o後面是可以接收一個值,這個值就是-o的參數值,將會保存到opts變量中。 長參數名的方式和短參數差不多,唯一的區別就是長參數如果要接收值,那必須得在後面加上一個"="

python如何實現像shell中的case功能