目的:想從命令列通過命令來指定是否執行程式中的某個函式/模組
更新關於另乙個例子:
這裡只舉例說明(原因是看了很多博文之後,還是沒有解決筆者上面說的那個問題,即如何從命令列決定是否執行某段函式問題)
設定乙個引數,名為foreground,簡寫f(即在終端可以輸入–foreground也可以輸入-f。跟自帶的help很像,可以輸入–help,也可以輸入-h);現在要求,當foreground=true時,執行a+b,當等於false時執行a-b。
借助parser裡面引數設定型別type預設是str,**如下
import argparse
parser = argparse.argumentparser()
#這裡加入的引數預設型別type是字串,而我們輸入的是字串,所以不用寫type=str
parser.add_argument("-f",'--foreground',default='true',choices=['true', 'false'])
args = parser.parse_args()
def add(a,b):
if args.foreground=='true':
return a+b
else: return a-b
print(add(3,2))
我們預設情況下執行a+b,即default=『true』
終端執行命令解釋:
用python執行程式,先用-h來看有多少變數,發現有help(自帶)和-f,其中-f可以取兩個值,true和false, 並且-f的說明是input foreground components.
python test.py -h
由於我們預設-f是true,所以直接執行test.py得到5
python test.py
這和我們寫-f true是一樣的結果。最後我們寫成false,發現執行的是a-b。
將型別type改為bool算符。這裡有個問題,實際上argparse沒有bool這種型別,只要出現不是空字元,bool就為真。因此實際上不能用這種方法,因為-f只要有輸入,即不為空,就認為是真,但是可以從另一方面考慮,即先設定為false,這樣預設執行假,即不執行真的部分,當輸入true時則執行真的部分(如前所述,寫false也會執行真)
可見vars()是將args裡的引數和引數值生成為乙個字典
Python argparse模組的使用
最近在看github上的mmskeleton專案時,遇到了python中的argparse模組。於是查閱了一下資料 根據官方給出的argparsetutorial,該模組的作用在於對命令列進行解析。英文比較好的朋友,建議直接看tutorial,其中的解釋還是很清楚的。看英文比較頭疼的朋友,也可以參考...
python argparse轉換為字典
在使用argparse定義程式引數時,常規用法如下 import argparse parser argparse.argumentparser parser.add argument epochs type int default 5000 help train epochs.parser.add...
python argparse 引數解析模組
這是乙個引數解析,可以用它快捷的為你的程式生成引數相關功能 import argparse 匯入程式引數模組 建立argparse物件,並將產品簡要說明加入 show 程式說明 程式簡要說明 字串 輸出help時會顯示 p argparse.argumentparser description sh...