問題:
- 程序如何能夠解析命令行選項
解決方案
argparse
模塊可被用來解析命令行選項
argparse
模塊
argparse
模塊是標准庫中最大的模塊之一,擁有大量的配置選項
dest
參數指定解析結果被指派給屬性的名字
metavar
參數被用來生成幫助信息
action
參數指定跟屬性對應的處理邏輯, 通常的值為 store
,將其存儲為字符串,action='append' 用來存儲某個值或將多個參數值收集到一個列表中
一旦參數選項被指定,你就可以執行 parser.parse()
方法了。 它會處理 sys.argv
的值並返回一個結果實例。 每個參數值會被設置成該實例中 add_argument()
方法的 dest
參數指定的屬性值。
nargs 作用: 把參數放到一個列表中
import argparse parser = argparse.ArgumentParser(description='Search some files') parser.add_argument(dest='filenames',metavar='filename', nargs='*') args = parser.parse_args() print(args.filenames)
執行腳本
python test_nargs.py t.txt t1.txt t2.txt
action='store_true' 根據參數是否存在來設置一個 Boolean
標志
import argparse parser = argparse.ArgumentParser(description='Search some files') parser.add_argument('-v', dest='verbose', action='store_true', help='verbose mode') args = parser.parse_args() print(args.verbose)
執行腳本
action='store' 接受一個單獨值並將其存儲為一個字符串
import argparse parser = argparse.ArgumentParser(description='Search some files') parser.add_argument('-o', dest='outfile', action='store', help='output file') args = parser.parse_args() print(args.outfile)
執行腳本
action='append' 把接受到的值追加到列表中
import argparse parser = argparse.ArgumentParser(description='Search some files') parser.add_argument('-o','--pat', dest='outfile', action='append', help='output file') args = parser.parse_args() print(args.outfile)
執行腳本
python test_nargs.py -o hello --pat hello1
choices={'slow','fast'}, default='slow' 參數說明接受一個值,但是會將其和可能的選擇值做比較,以檢測其合法性
import argparse parser = argparse.ArgumentParser(description='Search some files') parser.add_argument('--speed', dest='speed', action='store', choices={'slow','fast'}, default='slow', help='search speed') args = parser.parse_args() print(args.speed)
執行腳本