有些時候我們需要通過命令行將參數(shù)傳遞給腳本,C語言中有個getopt()方法,python中也有個類似的命令行參數(shù)解析方法getopt()。python也提供了比getopt()更簡潔的argparse方法。另外,sys模塊也可以實現(xiàn)簡單的參數(shù)解析,本文將對這3種命令行參數(shù)解析方法簡要介紹。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供班瑪網(wǎng)站建設(shè)、班瑪做網(wǎng)站、班瑪網(wǎng)站設(shè)計、班瑪網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、班瑪企業(yè)網(wǎng)站模板建站服務(wù),10余年班瑪做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
sys.argv是傳入的參數(shù)列表,sys.argv[0]是當(dāng)前python腳本的名稱,sys.argv[1]表示第一個參數(shù),以此類推。
命令行運(yùn)行:
可以看到傳入的參數(shù)通過sys.argv來獲取,它就是一個參數(shù)列表。
python的getopt與C語言的的getopt()函數(shù)類似。相比于sys模塊,支持長參數(shù)和短參數(shù),并對參數(shù)解析賦值。但它需要結(jié)合sys模塊進(jìn)行參數(shù)解析,語法格式如下:
短參數(shù)為單個英文字母,如果必須賦值需要在后面加英文冒號( : ),長參數(shù)一般為字符串(相比短參數(shù),更能說明參數(shù)含義),如果必須賦值需要在后面加等號( = )。
命令行運(yùn)行:
注意:短參數(shù)(options)和長參數(shù)(long_options)不需要一一對應(yīng),可以任意順序,也可以只有短參數(shù)或者只有長參數(shù)。
argparse模塊提供了很多可以設(shè)置的參數(shù),例如參數(shù)的默認(rèn)值,幫助消息,參數(shù)的數(shù)據(jù)類型等。argparse類主要包括ArgumentParser、add_argument和parse_args三個方法。
下面介紹這三個函數(shù)的使用方法。
argparse默認(rèn)提供了 -h | --help 參數(shù):
命令行運(yùn)行:
下面列出部分參數(shù):
下面來添加參數(shù):
命令行運(yùn)行:
parse_args() 方法用于解析參數(shù),在前面的示例代碼中使用parse_args方法來提取參數(shù)值,對于無效或者錯誤的參數(shù)會打印錯誤信息和幫助信息:
命令行運(yùn)行:
本文介紹了Python的三種命令行參數(shù)解析方法sys.argv、getopt和argparse,可以根據(jù)自己的需要進(jìn)行選擇,getopt和argparse兩種方法相比來說,建議選擇argparse,代碼量更少更簡潔。更詳細(xì)的使用方法參考官方文檔:
--THE END--
1、complex()
返回一個形如?a+bj?的復(fù)數(shù),傳入?yún)?shù)分為三種情況:
參數(shù)為空時,返回0j;參數(shù)為字符串時,將字符串表達(dá)式解釋為復(fù)數(shù)形式并返回;參數(shù)為兩個整數(shù)(a,b)時,返回?a+bj;參數(shù)只有一個整數(shù) a 時,虛部 b 默認(rèn)為0,函數(shù)返回?a+0j。
2、dir()
不提供參數(shù)時,返回當(dāng)前本地范圍內(nèi)的名稱列表;提供一個參數(shù)時,返回該對象包含的全部屬性。
3、divmod(a,b)
a -- 代表被除數(shù),整數(shù)或浮點數(shù);b -- 代表除數(shù),整數(shù)或浮點數(shù);根據(jù) 除法運(yùn)算 計算 a,b 之間的商和余數(shù),函數(shù)返回一個元組(p,q)?,p 代表商?a//b?,q 代表余數(shù)?a%b。
4、enumerate(iterable,start=0)
iterable -- 一個可迭代對象,列表、元組序列等;start -- 計數(shù)索引值,默認(rèn)初始為0‘該函數(shù)返回枚舉對象是個迭代器,利用 next() 方法依次返回元素值,每個元素以元組形式存在,包含一個計數(shù)元素(起始為 start )和 iterable 中對應(yīng)的元素值。
python中def意思是聲明函數(shù)。
Python 使用def 開始函數(shù)定義,緊接著是函數(shù)名,括號內(nèi)部為函數(shù)的參數(shù),內(nèi)部為函數(shù)的 具體功能實現(xiàn)代碼,如果想要函數(shù)有返回值, 在?expressions 中的邏輯代碼中用 return 返回。
expressions
實例def function():
print('This is a function')
a = 1+2
print(a)
相關(guān)內(nèi)容:
function 的函數(shù),函數(shù)沒有不接受參數(shù),所以括號內(nèi)部為空,緊接著就是 函數(shù)的功能代碼。如果執(zhí)行該腳本,發(fā)現(xiàn)并沒有輸出任何輸出,因為我們只定義了函數(shù),而并沒有執(zhí)行函數(shù)。 這時我們在 Python 命令提示符中輸入函數(shù)調(diào)用 function(), 注意這里調(diào)用函數(shù)的括號不能省略。
那么函數(shù)內(nèi)部的功能代碼將會執(zhí)行,輸出結(jié)果:This is a function。