運(yùn)行python程序時(shí),有時(shí)需要在命令行傳入一些參數(shù)。常見(jiàn)的方式是在執(zhí)行時(shí),在腳本名后直接追加空格分隔的參數(shù)列表(例如 python test.py arg0 arg1 arg2),然后在腳本中就可以通過(guò)sys.argv獲取所有的命令行參數(shù)。
這種方式的優(yōu)點(diǎn)是傳參方便,參數(shù)獲取簡(jiǎn)單;缺點(diǎn)是執(zhí)行腳本時(shí),必須知道參數(shù)的順序,并且不能設(shè)置默認(rèn)值,所有參數(shù)每次都必須傳入。
還有一種命令行傳參方式是通過(guò)帶選項(xiàng)的方式進(jìn)行傳參(例如python test.py -p0=arg0 -p1=arg1)。
這種方式的優(yōu)點(diǎn)是參數(shù)不用按照固定的順序傳入,并且對(duì)于有默認(rèn)值的參數(shù),可以不傳參數(shù)直接使用默認(rèn)值;缺點(diǎn)是傳入?yún)?shù)時(shí)需要額外加上選項(xiàng)。
對(duì)于帶選項(xiàng)的命令行參數(shù),可以通過(guò)python自帶的getopt模塊來(lái)進(jìn)行解析。
主要方法:
getopt(args, shortopts, longopts = []):解析命令行選項(xiàng)和參數(shù)列表。
args是不包括運(yùn)行程序引用的參數(shù)列表,通常來(lái)說(shuō)就是sys.args[1:]。
shortopts是腳本要識(shí)別的短選項(xiàng)字母,如果短選項(xiàng)需要參數(shù),需要在字母后加冒號(hào)“:”。
longopts是支持的長(zhǎng)選項(xiàng),是一個(gè)長(zhǎng)選項(xiàng)名稱(chēng)的列表。選項(xiàng)名稱(chēng)不包括“-”。需要參數(shù)的長(zhǎng)選項(xiàng),需要在后面加一個(gè)等號(hào)“=”。
返回值包括兩個(gè)列表:第一個(gè)列表中是(選項(xiàng),值),如果選項(xiàng)沒(méi)有參數(shù),值為空字符串。第二個(gè)列表是剝離選項(xiàng)之后的程序參數(shù)列表。長(zhǎng)項(xiàng)前用“--”,短項(xiàng)前用“-”。
另外要注意的是當(dāng)進(jìn)行命令行參數(shù)解析時(shí),如果遇到了非選項(xiàng)的參數(shù)時(shí),就會(huì)停止帶選項(xiàng)參數(shù)的解析。
簡(jiǎn)單示例
#!/usr/bin/python
# -*- coding: gbk -*-
import sys
import getopt
def printUsage():
print ('''usage: test.py -i
-o
以上這篇Python編寫(xiě)帶選項(xiàng)的命令行程序方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

