python 解析命令行選項


問題:

  • 程序如何能夠解析命令行選項

解決方案

  • 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)  

執行腳本 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM