解讀Python腳本的常見(jiàn)參數(shù)獲取和處理方式
Python腳本常見(jiàn)參數(shù)獲取和處理
平常寫(xiě) python 腳本時(shí)會(huì)有一些從命令行獲取參數(shù)的需求,這篇文章記錄下常見(jiàn)的參數(shù)獲取和處理方式。
1. 使用args獲取參數(shù)
使用 sys.argv[] 可以接收腳本的參數(shù),得到一個(gè)列表類(lèi)型,列表第一個(gè)元素是腳本名稱(chēng),通過(guò) sys.argv[1:] 得到命令行傳進(jìn)來(lái)的所有參數(shù)。
代碼示例:
test_args.py import sys argv = sys.argv[1:] print("args==argv==", argv)
代碼執(zhí)行效果:
2. 使用getopt處理命令行傳入的參數(shù)
getopt 是專(zhuān)門(mén)用來(lái)處理命令行參數(shù),使用格式大概為getopt(args, shortopts, longopts = []),其中參數(shù) args 一般是sys.argv[1:], shortopts 是短格式參數(shù) (-),longopts 是長(zhǎng)格式參數(shù)(–)
代碼示例:
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)! ''' test_args.py argv = sys.argv[1:] print("args==argv==", argv) options, args = getopt.getopt(sys.argv[1:], "hd:n:", ["help", "date=", "name="]) print("args==getopt==",options, "options=====", args)
代碼執(zhí)行結(jié)果:
3. 標(biāo)準(zhǔn)庫(kù)argsparse
argsparse 是 python 的命令行解析的標(biāo)準(zhǔn)模塊,內(nèi)置于python,不需要安裝。這個(gè)庫(kù)可以讓我們直接在命令行中就可以向程序中傳入?yún)?shù)并讓程序運(yùn)行。
代碼示例:
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)! ''' test_args.py import argparse parser = argparse.ArgumentParser(description='ArgUtils') parser.add_argument('-d', type=str, default='000000', help="data date") parser.add_argument('-a', type=str, default=None, help="agent_id_from_platform id") args = parser.parse_args()
在 add_argument函數(shù)中,第一個(gè)參數(shù)是腳本參數(shù)傳入名稱(chēng);type 是限制傳入?yún)?shù)的類(lèi)型;default 為參數(shù)設(shè)置默認(rèn)值;required 設(shè)置參數(shù)是否為必傳。
代碼執(zhí)行效果:
總得來(lái)說(shuō),args兼容性比較強(qiáng),可以接收任意方式的傳參,getopt 對(duì)傳入?yún)?shù)進(jìn)行了分組,argparse 則使傳入的參數(shù)可讀性更高,支持的功能多一些。
Python腳本獲取外部參數(shù)
方式1
使用sys模塊獲取參數(shù),比較簡(jiǎn)單
import sys print("python文件名: ", sys.argv[0]) print("第1個(gè)參數(shù): ", sys.argv[1]) print("第2個(gè)參數(shù): ", sys.argv[2]) # 傳參方式 python test.py arg1 arg2
方式2
如果參數(shù)較多,參數(shù)有默認(rèn)值,建議使用argparse模塊,閱讀性更高。
可以定義參數(shù)類(lèi)型、默認(rèn)值。
import argparse # 設(shè)置參數(shù)名 parser = argparse.ArgumentParser() parser.add_argument("-username", dest="username", type=str) parser.add_argument("-password", dest="password", type=str) parser.add_argument("-date", dest="date", type=str, default='2021-01-01') # 獲取參數(shù) args = parser.parse_args() username = args.username password = args.password date = args.date # 傳參方式 python test.py -username=xxx -password=xxx
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)GIF動(dòng)圖以及視頻卡通化詳解
本文主要介紹了如何使用Python中的animegan2-pytorch實(shí)現(xiàn)動(dòng)圖以及視頻的卡通化效果,文中的代碼具有一定的學(xué)習(xí)價(jià)值,需要的朋友可以參考一下2021-12-12我們?yōu)槭裁匆獪p少Python中循環(huán)的使用
這篇文章主要介紹了我們?yōu)槭裁匆獪p少Python中循環(huán)的使用,我將闡述 Python 提供的一些簡(jiǎn)單但是非常有用的結(jié)構(gòu),一些小技巧以及一些我在數(shù)據(jù)科學(xué)工作中遇到的案例。我將討論 Python 中的 for 循環(huán),以及如何盡量避免使用它們,需要的朋友可以參考下2019-07-07Pyramid Mako模板引入helper對(duì)象的步驟方法
ylons中的mako模板,默認(rèn)會(huì)引入一個(gè)helper對(duì)象,我們可以在里面擴(kuò)展方法,應(yīng)對(duì)在模板輸出時(shí)候會(huì)常用的操作,那么在Pyramid中如何默認(rèn)引入同樣的輔助類(lèi)到模板中2013-11-11Python下實(shí)現(xiàn)的RSA加密/解密及簽名/驗(yàn)證功能示例
這篇文章主要介紹了Python下實(shí)現(xiàn)的RSA加密/解密及簽名/驗(yàn)證功能,結(jié)合具體實(shí)例形式分析了Python中RSA加密、解密的實(shí)現(xiàn)方法及簽名、驗(yàn)證功能的使用技巧,需要的朋友可以參考下2017-07-07搭建?Selenium+Python開(kāi)發(fā)環(huán)境詳細(xì)步驟
這篇文章主要介紹了搭建?Selenium+Python開(kāi)發(fā)環(huán)境詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下2022-10-10python導(dǎo)包的幾種方法(自定義包的生成以及導(dǎo)入詳解)
這篇文章主要介紹了python導(dǎo)包的幾種方法(自定義包的生成以及導(dǎo)入詳解),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07