python命令行傳參詳解,optparse模塊OptionParse類的學習


 

官網鏈接:https://docs.python.org/3/library/optparse.html

 https://docs.python.org/2/library/argparse.html

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
(options, args) = parser.parse_args()
print(options,type(options),args,type(args))   #print(type([]))  結果:<class 'list'>
 
        

options,是個類,dest是鍵值對里的鍵,值是None,args是列表,空

沒傳參的時候

 -f 空格指定字符串,會將它作為dest里filename的值,

 我再加一個短橫線,結果還是可以的  --f

 使用--file 也可以

 其它字符串,不在--file后的那個,無論在它前面還是后面,都加進了args列表里。

臨時給程序加個-m

 也是可以用的

 后面再用這個的,被覆蓋掉了

 代碼現在如下,調用它的值

 調用它的值,點來調用

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
(options, args) = parser.parse_args()
with open('%s'%options.filename,mode='w',encoding='utf-8') as f:
    f.write('我是小馬過河')
if "mcw" in args:
    print('歡迎mcw',args)

  這樣就可以指定文件做操作,傳參中有啥參數也可以做對應參數了。

 

-h或者--help可以查看幫助信息,指定參數的介紹信息

 

 添加-q參數,多了一組鍵值對,命令行加上-q值是假,不加也就是默認是真。(自解:可用於某個功能或其它是否開啟或其他並給出默認狀態)

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")
(options, args) = parser.parse_args()
print(options,args)
代碼

官網介紹

optparse是一個比舊getopt模塊更方便、靈活和強大的命令行選項解析庫。 optparse使用更具聲明性的命令行解析風格:創建 的實例 OptionParser,用選項填充它,然后解析命令行。optparse允許用戶在傳統的 GNU/POSIX 語法中指定選項,並額外為您生成使用和幫助消息。

這是optparse在簡單腳本中使用的示例:

from optparse import OptionParser
...
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")

(options, args) = parser.parse_args()
使用這幾行代碼,您的腳本用戶現在可以在命令行上執行“常規操作”,例如:

<yourscript> --file=outfile -q
當它解析命令行時,根據用戶提供的命令行值optparse設置options返回的對象的屬性 parse_args()。當parse_args()解析此命令行返回時,options.filenamewill be"outfile"並且options.verbosewill be False。 optparse支持長選項和短選項,允許將短選項合並在一起,並允許選項以多種方式與其參數相關聯。因此,以下命令行都等效於上面的示例:

<yourscript> -f outfile --quiet
<yourscript> --quiet --file outfile
<yourscript> -q -foutfile
<yourscript> -qfoutfile
此外,用戶可以運行以下之一

<yourscript> -h
<yourscript> --help
並且optparse將打印出你的腳本選項的簡介:

Usage: <yourscript> [options]

Options:
  -h, --help            show this help message and exit
  -f FILE, --file=FILE  write report to FILE
  -q, --quiet           don't print status messages to stdout
其中yourscript的值是在運行時確定的(通常來自 sys.argv[0])。
官網介紹
<yourscript> --file=outfile -q

因此,以下命令行都等效於上面的示例:

<yourscript> -f outfile --quiet <yourscript> --quiet --file outfile <yourscript> -q -foutfile <yourscript> -qfoutfile
首先,需要導入OptionParser類;然后,在主程序的早期,創建一個 OptionParser 實例:

from optparse import OptionParser
...
parser = OptionParser()
然后您可以開始定義選項。基本語法是:

parser.add_option(opt_str, ...,
                  attr=value, ...)
每個選項都有一個或多個選項字符串,例如-f或--file,以及幾個選項屬性,用於告訴optparse在命令行上遇到該選項時會發生什么以及要做什么。

通常,每個選項都有一個短選項字符串和一個長選項字符串,例如:

parser.add_option("-f", "--file", ...)
您可以隨意定義任意數量的短選項字符串和任意數量的長選項字符串(包括零),只要總體上至少有一個選項字符串即可。

傳遞給的選項字符串OptionParser.add_option()實際上是該調用定義的選項的標簽。為簡潔起見,我們會經常提到 在命令行中遇到一個選項;實際上,optparse 遇到選項字符串並從中查找選項。

定義所有選項后,指示optparse解析程序的命令行:

(options, args) = parser.parse_args()
(如果您願意,可以將自定義參數列表傳遞給parse_args(),但這很少需要:默認情況下它使用sys.argv[1:]。)

parse_args() 返回兩個值:

options, 一個包含所有選項值的對象——例如,如果 --file采用單個字符串參數,options.file則將是用戶提供的文件名,或者None如果用戶沒有提供該選項

args,解析選項后剩余的位置參數列表

本教程部分僅涵蓋四個最重要的選項屬性: action、type、dest (目的地)和help。其中,action是最基本的。
官網介紹2

最常見的選項操作是store,它告訴optparse采用下一個參數(或當前參數的其余部分),確保它的類型正確,並將其存儲到您選擇的目的地。

例如:

parser.add_option("-f", "--file", action="store", type="string", dest="filename")

 

模擬傳參,假的傳參,結果一樣

 

 終端上效果一致的傳參,不用創建列表,將列表傳進去,貌似argv[1:]的參數就是一個列表,默認傳遞到parse_args方法中,遇到定義的-f之類的,就會將后面那個值存到dest中,作為定義的dest的值,而其它沒用add_option的就傳到args列表中

 不加類型,傳遞的是字符串。action默認是store,可以不填

 要想傳遞進去是個數字,就要加類型的參數是int

 還可以拼接在一起傳參

 之前的也可以簡寫:也可以拼在一起傳參

  選項參數是42 選項卡是-n               這一次,我們將選項參數與選項卡在一起:因為-n42(一個參數)等價於 (兩個參數),代碼-n 42 傳遞進的是["-n42"]

 -q沒有默認值,不傳參就是None,傳了參數就是false

 可以引號引起來當成一個

 選項卡剛剛試了試可以是傳字母數字字符串,但是-只能加一個字符串,;要想用多個字符串,必須用--添加長字符串

optparse自動生成幫助和使用文本的能力對於創建用戶友好的命令行界面非常有用。您所要做的就是help為每個選項提供一個值,並可選擇為整個程序提供一個簡短的使用消息。這是一個填充了用戶友好(記錄)選項的 OptionParser:

usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-v", "--verbose",
                  action="store_true", dest="verbose", default=True,
                  help="make lots of noise [default]")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose",
                  help="be vewwy quiet (I'm hunting wabbits)")
parser.add_option("-f", "--filename",
                  metavar="FILE", help="write output to FILE")
parser.add_option("-m", "--mode",
                  default="intermediate",
                  help="interaction mode: novice, intermediate, "
                       "or expert [default: %default]")
官網幫助信息生成
from optparse import OptionParser
parser = OptionParser()
usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-v", "--verbose",
                  action="store_true", dest="verbose", default=True,
                  help="make lots of noise [default]")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose",
                  help="be vewwy quiet (I'm hunting wabbits)")
parser.add_option("-f", "--filename",
                  metavar="FILE", help="write output to FILE")
parser.add_option("-m", "--mode",
                  default="intermediate",
                  help="interaction mode: novice, intermediate, "
                       "or expert [default: %default]")
(options, args) = parser.parse_args()
print(options,args)
執行生成幫助代碼

定義幫助信息中%default會使用默認的值,%prog代表腳本名字,定義了Usage消息

 至此,命令行傳參大部分場景可以使用了,其它功能有時間再補充

 

 

 



 


免責聲明!

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



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