python_命令行傳參


  • 需求:在命令行中通過參數(shù)控制日志的輸出級別


  • 思路分析:

1.如果想要通過命令行傳入?yún)?shù)睁枕,那么就要在被執(zhí)行文件中寫入方法能夠獲取到命令行中的參數(shù)
2.如果能獲取到參數(shù)宵晚,那么我們就能通過參數(shù)進行簡單的if 。立轧。。else 判斷給出不同的選項
3.既然有命令行了舍哄,那么-h (help)就一定不能少
4.還有一個比較重要的問題就是怎樣將參數(shù)傳入其它相關(guān)引用模塊中


  • 明確這四個功能點后,那就分頭行動誊锭,尋找解決方案

answer python中內(nèi)置函數(shù)模塊 sys 就能實現(xiàn)命令行的抓取

  • 方法一:
    eg:
    文件名為:test.py
    import sys
    print "腳本名:", sys.argv[0]
    for i in range(1, len(sys.argv)):
    print "參數(shù)", i, sys.argv[i]
    命令行輸出:
    python test.py hello world
    輸出結(jié)果:
    腳本名:test.py
    參數(shù) 1 hello
    參數(shù) 2 world
    這種方法可以實現(xiàn)簡單的參數(shù)傳入表悬,但是無法實現(xiàn){key:value}的形式
    例如這樣的更加靈活些:
    python test.py -l info
  • 方法二:
    eg:
    test.py
    import getopt,sys
    def usage():
    """使用說明"""
    print """
    參數(shù)使用說明: -l [info][debug][error][warning]
    (分別控制日志輸出級別為:info/debug/error/warning)
    !默認日志輸出級別為:warning
    eg: python Run.py -l info
    """
    opts, args = getopt.getopt(sys.argv[1:], 'hl:')
    """說明:參數(shù)h為開關(guān)丧靡,l:為可識別輸出參數(shù)蟆沫;如果新增p參數(shù),則可以'hl:p:'這樣寫 """
    level = 'w'
    for op, value in opts:
    if op == '-l':
    level = value
    elif op == '-h':
    #幫助文檔
    usage()
    sys.exit()
    命令行:
    python test.py -h
    python test.py -l info

a) sys.argv[1:]為要處理的參數(shù)列表温治,sys.argv[0]為腳本名饭庞,所以用sys.argv[1:]過濾掉腳本名。
b) "hi:o:": 當一個選項只是表示開關(guān)狀態(tài)時罐盔,即后面不帶附加參數(shù)時但绕,在分析串中寫入選項字符。當選項后面是帶一個附加參數(shù)時惶看,在分析串中寫入選項字符同時后面加一個":"號。所以"hi:o:"就表示"h"是一個開關(guān)選項六孵;"i:"和"o:"則表示后面應該帶一個參數(shù)纬黎。
c) 調(diào)用getopt函數(shù)。函數(shù)返回兩個列表:opts和args劫窒。opts為分析出的格式信息本今。args為不屬于格式信息的剩余的命令行參數(shù)。opts是一個兩元組的列表主巍。每個元素為:(選項串,附加參數(shù))冠息。如果沒有附加參數(shù)則為空串''。
getopt函數(shù)的第三個參數(shù)[, long_options]為可選的長選項參數(shù)孕索,上面例子中的都為短選項(如-i -o)長選項格式舉例:
--version
--file=error.txt
讓一個腳本同時支持短選項和長選項
getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])


  • 最后一個問題
  • 通過全局模塊方法傳遞參數(shù)
    eg:
    在test2.py中引用test中傳入的參數(shù)level
    test2.py
    import test.py
    parameter = test.level
    print parameter

@晴天--2016-09-13 10:48:34

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逛艰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搞旭,更是在濱河造成了極大的恐慌散怖,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肄渗,死亡現(xiàn)場離奇詭異镇眷,居然都是意外死亡,警方通過查閱死者的電腦和手機翎嫡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門欠动,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惑申,你說我怎么就攤上這事具伍〕岢” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵沿猜,是天一觀的道長枚荣。 經(jīng)常有香客問我,道長啼肩,這世上最難降的妖魔是什么橄妆? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮祈坠,結(jié)果婚禮上害碾,老公的妹妹穿的比我還像新娘。我一直安慰自己赦拘,他們只是感情好慌随,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躺同,像睡著了一般阁猜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹋艺,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天剃袍,我揣著相機與錄音,去河邊找鬼捎谨。 笑死民效,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的涛救。 我是一名探鬼主播畏邢,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼检吆!你這毒婦竟也來了舒萎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤咧栗,失蹤者是張志新(化名)和其女友劉穎逆甜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體致板,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡交煞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了斟或。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片素征。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出御毅,到底是詐尸還是另有隱情根欧,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布端蛆,位于F島的核電站凤粗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏今豆。R本人自食惡果不足惜嫌拣,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呆躲。 院中可真熱鬧异逐,春花似錦、人聲如沸插掂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辅甥。三九已至酝润,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間璃弄,已是汗流浹背袍祖。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谢揪,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓捐凭,卻偏偏與公主長得像拨扶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茁肠,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • sqlmap用戶手冊 說明:本文為轉(zhuǎn)載患民,對原文中一些明顯的拼寫錯誤進行修正,并標注對自己有用的信息垦梆。 ======...
    wind_飄閱讀 2,056評論 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當給sq...
    xuningbo閱讀 10,335評論 2 22
  • Python 獲得命令行參數(shù)的方法 如果想對python腳本傳參數(shù)匹颤,python中對應的argc, argv(c語...
    李澤于棟閱讀 495評論 0 0
  • getopt:和C中的getopt()等價。optparse:2.7后已不推薦使用托猩。argparse:基于optp...
    顧慎為閱讀 8,699評論 1 10
  • 文/浪歌淺尐 1. 他靦腆地笑道:“不不不印蓖,有什么意見你來寫,我不識字京腥,你念給我聽赦肃,我一定給領(lǐng)導反應。” 他說他不...
    浪歌淺尐閱讀 629評論 1 1